以下代码编译有错误,哪个选项能解决编译错误?
class A { public: int GetValue() const { vv = 1; return vv; } private: int vv; };
(1)const修饰成员变量
const修饰类的成员函数,表示成员常量,不能被修改,同时它只能在初始化列表中赋值。
class A
{
…
const int nValue; //成员常量不能被修改
…
A(int x): nValue(x) { } ; //只能在初始化列表中赋值
}
(2)const修饰成员函数
const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。
class A
{
…
void function()const; //常成员函数, 它不改变对象的成员变量.
//也不能调用类中任何非const成员函数。
}
对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。
a. const成员函数不被允许修改它所在对象的任何一个数据成员。
(3)const修饰类对象/对象指针/对象引用
【解析】普通成员函数后面加上 const 修饰,就是常函数。
常函数中的 this 指针是常指针,不能在常函数中对成员变量进行修改,只能读取;
如果想要在常函数中对成员变量进行修改,可以在成员变量前加上 mutable 关键字进行修饰;
【常函数和常对象知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp41