使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:
<类型说明符> <函数名> (<参数表>) const;
其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。
例子:
class Coo
{
public:
Coo() : a(0)
{}
int getA() const //常量成员函数
{
++a; //编译错误
return this->a;
}
private:
mutable int a;
};
getA() 后面的 const 表明 getA()不会修改类的成员变量,
但也不能确定,可以用mutable改变这一限制.
讨论:
放在后面表示在类中只有const 对象才可以调用const成员函数.
————————————————————
不是吧?非const对象一样可以调用const成员函数。const成员函数表示,这个函数不会修改类成员,除非成员加了修改mutable或者你在函数中主动使用了const_cast!它与普通成员函数就没有其他区别了。
放在后面表示在类中只有const 对象才可以调用const成员函数.
————————————————————
其实相信你自己的意思是对的,但是表达有误。应该是:用const结尾的成员函数只能调用其他const结尾的成员函数。因为其他函数并不能保证同样不修改类的成员变量
成员函数后加const,表示:类作者提示你,这个函数不会导致对象状态改变
可以理解为"表示这个函数不会修改任何成员变量"
但不可绝对化。其实,还是可以修改由mutable关键字修饰的成员变量的。
当同时有带 const 和不 带const 的版本时
常量对象(ie: const SomeClass obj) 调用前者,非常量对象(SomeClass obj) 使用后者。
http://student.youkuaiyun.com/space.php?uid=112600&do=blog&id=17009
放在函数后面的const是什么意思?
最新推荐文章于 2025-07-15 12:40:42 发布