const 只对其左边起作用,如果左边没数据 则对右边起作用
如:const int * p; //修饰int 指向的数不能修改(即:不能 *p = 3形式),但指针可以修改
int const * p 同const int *p ;
int * const p 修饰* 是常量指针 指针不能修改(即:不能 int a ,p= &a )但其指向变量可以修改(可以*p = 3))
常成员函数声明:<类型标志符>函数名(参数表)const;
说明:
(1)const是函数类型的一部分,在实现部分也要带该关键字。
(2)const关键字可以用于对重载函数的区分。
(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。
1、const成员:只能在构造函数后的初始化列表中初始化
2、static成员:初始化在类外,且不加static修饰
3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化
4.const 对象只能调用const成员函数
.在类中允许存在同名的常量函数和非常量函数,编译器根据调用该函数的对象选择合适的函数
当非常量对象调用该函数时,先调用非常量函数;
当常量对象调用该函数时,只能调用常量函数;
如果在类中只有常量函数而没有与其同名的非常量函数,则非常量与常量对象都可调用该常量函数;
常量引用返回值
如果你想从常量方法(函数)中通过引用返回this对象的一个成员,你应该使用常量引用来返回它,即const X&
陷阱:有一种例外,常量成员函数可以改变静态数据成员;另外,如果使用关键字mutable修饰数据成员,那么甚至常量数据成员也可以修改它。不过别担心这种例外情况。
对于X类型的非常量成员函数而言,其this指针的类型是X * const,该指针自身是常量;但是对于X类型的常量成员函数而言,其this指针的类型是const X * const,是一个常量指针。
C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码
将C语言梳理一下,分布在以下10个章节中:
Linux-C成长之路(十):其他高级议题