在C++里面,const关键字的用处很多,使用好const关键字对程序的健壮性大有好处。 首先来看看const一般都用在什么地方。 1.用于定义常量。 const用的最多的就是用来定义常量了。 const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。 一个最简单的例子:
#include
using namespace std;
int main()
{
const int i=5;
cout<<”i=”<<i<<endl;
//i=10;
//cout<<”i=”<<i<<endl;
};
这样运行时毫无问题的,但是如果你想给i重新赋值i=10的时候就会报错! 2.让指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值。 例如:
#include
#include
using namespace std;
int main()
{
int i=20;
const int* p=&i;//令p指向i,并且不能通过p修改i
cout<<*p<<” address:”<<p<<endl;
//*p=21;
i=15;
cout<<*p<<” address:”<<p<<endl;
};
const int* p=&i;该声明指出了p是一个指向const int的指针,因此不能使用p来修改这个值。
换句话说,*p的值为const,是不能修改的。
注意:这样就可以禁止通过p来修改i的值,例如*p=21这样的操作时不允许的。p的声明并不意味着它所指向的值就是一个const常量,而只是意味着对于p而言,这个值是const,但是这并不能说明i是一个不能修改的值,例如i=15,这样的操作时允许的。 并且,p指向的位置是可以改变的,例如:
#include
#include
using namespace std;
int main()
{
int i=20;
const int* p=&i;
cout<<*p<<” address:”<<p<<endl;
//*p=21;
int k=15;
p=&k;
cout<<*p<<” address:”<<p<<endl;
};
运行结果: 可以看出,p所指向的地址已经改变了! 3.将指针本身声明为常量,这样可以防止修改指针指向的位置。 例子:
#include#include using namespace std; int main() { int i=20; int\* const p=&i;//注意const的位置 cout<<\*p<<" address:"< #include
using namespace std; int main() { const int pos1=20; int pos2=20; //pp1,pp2均是const int\*,但只有pos1是const const int\* pp1=&pos1; const int\* pp2=&pos2; int \*p1=const\_cast (pp1); int \*p2=const\_cast (pp2); \*p1=15; \*p2=15; cout<<"pos1="< 赏感谢支持
支付宝
微信