如何在C++中使用const
时间:2020-02-23 14:29:54 来源:igfitidea点击:
在本教程中,我们将重点介绍C++中的const。
C++中const的基础
C++有大量的关键字,可以帮助我们整体上为数据变量提供特殊功能。
C++中的const
使特定的数据实体成为一个常数,即在整个程序范围内,const变量的值保持不变。
在实际情况下,const关键字对于在使用过程中将特定值锁定为静态和常量非常重要。
让我们举个例子。
对于自动电子邮件系统,其中的所有者希望在每个月的最后日期向其员工发送邮件,所有者的电子邮件地址将保持不变。
因此,我们可以声明一个变量来保存所有者的电子邮件地址,并使用const关键字使其保持不变。
因此,我们实际上将节省时间并降低系统的复杂性。
C++中const的变体
C++中的const关键字可以与编程的不同数据实体一起使用,例如:
- 资料变数
- 函数参数
- 指针
- 类的对象
- 类数据成员
1.数据变量为const
当数据变量声明为const时,等于该变量的值被视为常量并且是不可变的。
语法:
const data-type variable = value;
例:
#include<iostream> using namespace std; int main() { const int A=10,B=20; cout<<"Addition: "<<(A+B); }
输出:
Addition: 30
如果我们尝试更改或者操纵const数据变量的值,则编译器将引发错误,表明我们无法将值分配给只读变量。
#include<iostream> using namespace std; int main() { const int A=10; A+=10; cout<<A; }
输出:
main.cpp: In function ‘int main()’: main.cpp:6:8: error: assignment of read-only variable ‘A’ A+=10;
2.函数参数在C++中为const
我们甚至可以将一个参数分配给函数/方法作为常量,从而将所有更改限制在该函数参数上。
语法:
data-type function(const data-type variable) { //body }
例:
#include<iostream> using namespace std; int add(const int x) { int res=0; int error=20; res = x+error; return res; } int main() { int ans = add(50); cout<<"Addition:"<<ans; }
输出:
Addition:70
如下所示,如果我们尝试操纵const函数参数的值,则编译器将引发错误。
#include<iostream> using namespace std; int add(const int x) { x=x+100; return x; } int main() { int ans = add(50); cout<<"Addition:"<<ans; }
在上面的示例中,我们试图更改const函数参数" x"的值,从而导致编译器错误。
输出:
main.cpp: In function ‘int add(int)’: main.cpp:5:9: error: assignment of read-only parameter ‘x’ { x=x+100;
3.指针为const
指针变量也可以使用以下语法声明为常量:
data-type const *variabl;
例:
#include<iostream> using namespace std; int main() { int age = 21; int const *point = & age; cout<<"Pointer value: "<<*point; }
输出:
Pointer value: 21
错误和异常:
如果我们尝试操纵const指针的值,则会导致编译错误。
#include<iostream> using namespace std; int main() { int age = 21; int const *point = & age; *point=*point+10; cout<<"Pointer value: "<<*point; }
输出:
main.cpp: In function ‘int main()’: main.cpp:6:19: error: assignment of read-only location ‘* point’ *point=*point+10;
4.类的数据变量为const
也可以将Class变量视为const,以使数据变量的值恒定且不变。
语法:
const data-type variable = value;
例:
#include<iostream> using namespace std; class Demo { public: const int X = 10; }; int main() { Demo d; cout<<d.X; }
输出:
10
错误和异常:
#include<iostream> using namespace std; class Demo { public: const int X = 10; }; int main() { Demo d; d.X=100; cout<<d.X; }
输出:
main.cpp: In function ‘int main()’: main.cpp:12:8: error: assignment of read-only member ‘Demo::X’ d.X=100;
5.类的对象为const
甚至类的对象也可以使用const关键字。
一旦我们将一个类的对象声明为常量,该类的数据变量就变得不可变,即属于该对象所指向的类的数据变量的值无法更改。
语法:
const Class object;
例:
#include<iostream> using namespace std; class Demo { public: int X = 10; }; int main() { const Demo d; cout<<d.X; }
输出:
10
错误和异常:
#include<iostream> using namespace std; class Demo { public: int X = 10; }; int main() { const Demo d; d.X=100; cout<<d.X; }
输出:
main.cpp: In function ‘int main()’: main.cpp:12:8: error: assignment of member ‘Demo::X’ in read-only object d.X=100;