一const限定符概述:
(1)定义常量,定义后不能修改,定义时必须初始化。
(2)const对象默认为文件的局部变量:此变量只存在于定义的那个文件,不能被其他文件访问(默认情况下);要被其它文件访问,必须显式的指定为extern。
(3)非const对象默认为extern。
二 const与指针:
(1)指向const对象的指针:不能通过ptr改变所指对象的值。
*const type * ptr:限定了ptr所指对象的类型而非ptr本身的类型。
*允许把非const对象的地址赋给指向const对象的指针,但不能通过ptr改变所指对象的值。
*不可以把const对象的地址赋给非指向const对象的指针。
(2)const指针:指针本身不能修改。
*type * const ptr:ptr不能被修改,ptr所指对象的值是否可以修改取决于该对象的类型。
(3)指向const对象的const指针:指针不能修改,也不能通过指针修改所指对象的值。
三 const引用:指向const对象的引用。
*可以把非const对象绑定到const引用,但不能通过引用修改它。
*不能把const对象绑定到非const引用。
四 const成员函数:
*const成员不会对类对象的数据成员做任何修改(可以修改类的static数据成员)。
*const对象只能调用const成员函数;非const对象都可以使用。
*const成员函数中,this的类型是一个指向const类类型对象的const指针。非const成员函数中是一个指向类类型的const指针。
*const成员函数只能返回*this作为一个const引用。
五 C与C++中const的区别:
(1)C中const变量只是一个不能被修改的普通常量,是运行期常量不是编译期常量,不能作为数组大小来定义数组,在C中常量表达式必须是编译期常量;而C++无此限制,所以可以用来声明数组。
(2)c++中const变量默认使用内部链接,在全局作用域声明的const变量是定义该对象的文件的局部变量,此变量只存在于当前文件,不能被其它文件访问,通过指定const为extern可在整个程序访问;在C中则是外部链接。