const注意的几个事项
时间:2010-10-11 来源:huabinbin00
const的好处:
使用const的好处在于它允许指定一种语意上的约束——某种数据不能被修改——编译器具体来实施这种约束。通过const,我们可以告知编译器和其他程序员某个值要保持不变。只要是这种情况,我们就要明确地使用const ,因为这样做就可以借助编译器的帮助确保这种约束不被破坏。
看下面几个例子估计又得头大:
const int *c; //指针所指向的内容不能变
int const *c; //指针所指向的内容不能变
int * const c; //指针的指向不能变
const int * const c; //指针的指向不能变,指针所指向的内容不能变
在这里教下大家下次看到这个就知道const 修饰的是什么。
若const在*号的左侧,则用来修饰指针所指向的变量
若const在*号的右侧,则用来修饰指针本身
有时大家在看C++程序的时候会发现const不仅仅用来修饰属性,还用来修饰函数,且出现的位置还不一样,相信大家看下面的代码估计会对这个关键字又有深刻的理解:
#include "iostream.h"
char p[]="tom";
class constant
{
public:
const double PI;
const double G;
int age;
static const int count;
char *pname;
constant():PI(3.14),G(9.8),pname(p),age(3)//除了static属性外,其他所有属性都可以在这里赋值,且const属性必须在这里赋值
{
//G=9.8;//(X)常量,不能被修改
pname="hhh";
// pname[0]='l';
}
int f1()const
{
//age++; //(x)方法后的const表示此方法不能修改属性的值
return age;
}
const int &f2()
{
//age++; //(x)//方法前的const表示不能被返回的引用进行修改,即不可以 c.f2()=100;
return age;
}
int f3(const int a)
{
// a++; //(x)//参数前const表示不能对参数引用进行修改
return a;
}
};
const int constant::count = 0; //一个变量可以既是static,又是const 。 在类外初始化,初始化时要加const.
void main()
{
constant c;
cout<<c.G<<endl;
//c.f2()=100; //(x) 方法前的const表示不能被返回的引用进行修改
cout<<c.pname<<endl;
cout<<c.count<<endl;
}//*/