以下的每一点会给出代码示例说明
一、c++成员函数后的const有以下特点:
1.隐含的this指针以const 类名的类型传递
2.const 只能声明成员函数,不能声明静态函数
(static函数不能有const修饰符,const 成员函数是包含this指针的,这明显不被static函数允许)
3.const 成员函数不能修改对象的任意非静态成员
4.const 成员函数不能调用非const 成员函数
二、另外,const对象与const成员函数相关的内容
1.由const 类名构造的对象只能调用 const方法
2.const对象的构造函数和析构函数无需用关键字const声明
1-1
//error C2662: “Text::print”: 不能将“this”指针从“const Text”转换为“Text &” #include "stdafx.h" #include "iostream" using namespace std; class Text{ public: void printconst(void)const{cout<<"hello"<<endl;} void print(void){cout<<"hello"<<endl;} private: int k; }; //上面定义了类Text的一常量对象 int main(void) { a.printconst(); //ok a.print(); //error //上面a.print()调用是非法的 return 0; } |
1-2
//error C2272: “printconst”: 静态成员函数上不允许修饰符 #include "stdafx.h" #include "iostream" using namespace std; class Text{ public: void static printconst(void) const{cout<<"hello"<<endl;} void print(void){cout<<"hello"<<endl;} private: int k; }; int main(void) { Text a; a.printconst(); return 0; } |