Wil*_*Lou 5 c++ constants function
这里有一些代码复制自Thinking in C++ Vol1第10章.
#include <iostream>
using namespace std;
int x = 100;
class WithStatic {
static int x;
static int y;
public:
void print() const {
cout << "WithStatic::x = " << x << endl;
cout << "WithStatic::y = " << y << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
const函数print()的含义是什么?谢谢!
我之前听说过这被描述为“一种不会从逻辑上改变对象的方法”。这意味着通过调用此方法,调用者可以期望在方法返回后对象的状态保持不变。实际上,该this
指针变成了指向该类的常量实例的常量指针,因此成员变量无法更改。此规则的例外是如果成员变量使用mutable
. 如果类有mutable
成员变量,则可以通过非常量和常量方法修改它们。此外,不能从 const 方法内调用非常量方法。
有些人使用mutable
成员变量来缓存及时计算的结果。理论上,对象的状态不会改变(即唯一的效果是后续调用更快,但在给定相同输入的情况下它们会产生相同的结果)。