关于C++常量语法的简单问题

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()的含义是什么?谢谢!

dre*_*lax 3

我之前听说过这被描述为“一种不会从逻辑上改变对象的方法”。这意味着通过调用此方法,调用者可以期望在方法返回后对象的状态保持不变。实际上,该this指针变成了指向该类的常量实例的常量指针,因此成员变量无法更改。此规则的例外是如果成员变量使用mutable. 如果类有mutable成员变量,则可以通过非常量和常量方法修改它们。此外,不能从 const 方法内调用非常量方法。

有些人使用mutable成员变量来缓存及时计算的结果。理论上,对象的状态不会改变(即唯一的效果是后续调用更快,但在给定相同输入的情况下它们会产生相同的结果)。