c++ 中 const 常量函数 static 变量 整理

来源:互联网 发布:移民澳大利亚 知乎 编辑:程序博客网 时间:2024/06/05 15:40

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修饰的成员函数,只能调用常成员函数。

 

1const成员:只能在构造函数后的初始化列表中初始化

2static成员:初始化在类外,且不加static修饰

3const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化

4.const 对象只能调用const成员函数

 

.在类中允许存在同名的常量函数和非常量函数,编译器根据调用该函数的对象选择合适的函数

    当非常量对象调用该函数时,先调用非常量函数;

    当常量对象调用该函数时,只能调用常量函数;

    如果在类中只有常量函数而没有与其同名的非常量函数,则非常量与常量对象都可调用该常量函数;

 

常量引用返回值

如果你想从常量方法(函数)中通过引用返回this对象的一个成员,你应该使用常量引用来返回它,即const X&

 

 

陷阱:有一种例外,常量成员函数可以改变静态数据成员;另外,如果使用关键字mutable修饰数据成员,那么甚至常量数据成员也可以修改它。不过别担心这种例外情况。

 

对于X类型的非常量成员函数而言,其this指针的类型是 X * const,该指针自身是常量;但是对于X类型的常量成员函数而言,其this指针的类型是const X * const,是一个常量指针。

 

0 0
原创粉丝点击