1.如果想让一个变量的内容自动初始化后,一直保持不变,就可以用const定义一个常量。
2.Const申明之后,就不可以在进行更改原来的值。
3.常量定义中,初始化的值可以是一个不依赖运行的表达式。如下面:
Const int number=max(15,23);//error
就是错误的。
但是 const int number=100*sizeof(int);
4.平常的一些类型如 const int i;和int const i 都是一样的。
5.常量与指针
(1)const int* cp; //常量对象,指针并不是常量
(2)int const *cp;//和(1)是一样的
(3)int *const cp=; //常量指针,对象并不是常量。这个指针必须初始化,但是*cp是可以重新赋值的。
(1)中指针可以从新赋值,而指向的对象并不可以。
For eaxmple:
Int k=5,k1=6;
Const int *cp=&k;
Cp=&k2;//可以
*cp=12;//error
但是可以通过 k=12进行赋值;
(3)int *const cp=&k;
Cp=&k2;//error
*cp=34//可以
6.常量与引用
应该这样定义:
Int i=10;
Const int & ri=i;
也可以int const &ri=i;
但是不可以 int & const ri=i;
含义就是不让这个引用成为别的变量的别名。
如果我们不希望函数的调用者改变参数的值,最可靠的方法就是使用引用。
下面会出现编译错误:
Void func(const int& i)
{
I=100;
//不能通过i来改变它所代表的内存区域。
}
7.常量函数
常量函数时c++中的一个扩展,可以确保c++的封装性,在C++中为了防止c++中的数据成员被非法访问,c++中的成员函数分成两类,一类叫做常量成员函数(也叫观察者),另一类是非常量成员函数(也成为变异者)。在一个成员函数的签名后面加上关键字const就变成了常量函数。
For example:
Class Test
{
Public:
Void func()const;
Private:
Int intValue;
};
Void Test::func() const
{
Int Value=100;//error
}
上面的代码中,会出现错误,常量函数func()函数内试图去改变数据成员intValue的值,因此引发异常。