常函数 与 常对象
-
修饰词
- const,mutable。
- 解释
- const
- 中文:不变的
- mutable
- 中文:可变的
- const
常函数
- 如果一个 函数 被 const 修饰,那么在这个函数中就不能存在 任何 写操作,只允许存在 读操作。
#include <iostream>
using namespace std;
class TestClass {
public:
int num = 20;
void showNum() const {
cout << num << endl;
//this->num = num;
//只能读不能写
}
void setNum(int num) {
this->num = num;
}
};
int main() {
TestClass testClass;
testClass.setNum(50);
testClass.showNum();
return 0;
}
常对象
- 如果一个 对象 被 const 修饰,那么这个对象 只能使用常成员
- 如果对象存在属性,属性必须进行初始化,或者存在 无参构造函数。
#include <iostream>
using namespace std;
class TestClass {
public:
int num = 1; //属性
void showNum() const { //常函数
cout << num << endl;
}
void setNum(int num) { //非 常成员
this->num = num;
}
};
int main() {
const TestClass testClass;
testClass.showNum();
//testClass.setNum(2);
//只能调用常成员
return 0;
}
可变成员
- 如果一个 成员 被 mutable 所修饰,那么 常函数和常对象 就 可以 对它进行 写操作
#include <iostream>
using namespace std;
class TestClass {
public:
mutable int num; //可变的属性
void setNum(int num) const { //常函数
this->num = num; //可以修改
}
};
int main() {
TestClass testClassA;
testClassA.setNum(10);
const TestClass testClassB;
testClassB.num = 10;
return 0;
}