39 lines
977 B
C++
39 lines
977 B
C++
|
// 当const修饰成员函数时,函数内不能修改普通成员变量,但可以修改mutable修饰的成员变量。 当const修饰类对象时,只能读成员变量,不能修改成员变量的值。可以调用const修饰的成员函数,不
|
|||
|
// 能调用普通成员函数
|
|||
|
#include <iostream>
|
|||
|
#include <cstring>
|
|||
|
#include <cstdlib>
|
|||
|
|
|||
|
using namespace std;
|
|||
|
|
|||
|
class A
|
|||
|
{
|
|||
|
public:
|
|||
|
int x;
|
|||
|
mutable int y;
|
|||
|
|
|||
|
public:
|
|||
|
void setXY(int x, int y) const
|
|||
|
{
|
|||
|
// this->x = x; // error
|
|||
|
this->y = y;
|
|||
|
}
|
|||
|
void show()
|
|||
|
{
|
|||
|
cout << x << ", " << y << endl;
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
A a1;
|
|||
|
a1.setXY(1, 2); // const 函数,内部不修改非 mutable 的成员变量
|
|||
|
a1.show();
|
|||
|
|
|||
|
// const A a2; // 报错,const 变量必须存在初始值(右值)
|
|||
|
const A a2 = A();
|
|||
|
a2.setXY(0, 30); // const 对象可以访问 const 的成员函数
|
|||
|
// a2.show(); // const 对象不能访问非 const 成员函数
|
|||
|
return 0;
|
|||
|
}
|