-
const修饰成员函数的目的是什么?
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
(在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。)
除此之外,在类的成员函数后面加 const 还有什么好处呢?
那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。
-
如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
不会,这相当于函数的重载。
//注意:两个成员函数如果只是常量性不同,是可以被重载的。例如: class A { public: void f() { cout<<"non const"<<endl; } void f() const { cout<<" const"<<endl; } }; //微软笔试第二题正是考这个,const 对象调用f() const,非const对象调用 f()