<分区>
遇到两个const成员函数的解释
class A{
public:
...
void f() const {}
...
}
- 这意味着它只能访问常量成员;
- 表示不修改任何成员;
我觉得第二个是对的。但是为什么第一个出来呢?有什么需要澄清的吗?
谢谢!
<分区>
遇到两个const成员函数的解释
class A{
public:
...
void f() const {}
...
}
我觉得第二个是对的。但是为什么第一个出来呢?有什么需要澄清的吗?
谢谢!
最佳答案
您可以在 const 成员函数中检查所有类成员的值,在某些情况下,您甚至可以更改成员变量的值。第一个解释是不正确的,我不知道它来自哪里。第二种解释是正确的,但有一些异常(exception)。
此规则有一些异常(exception)情况。您还可以更改 const 成员函数中的可变变量,例如这样声明的成员变量:
mutable float my_rank;
你也可以通过 const_cast 对你自己的引用来破坏类中的 const 正确性:
Class* self = const_cast<Class*> (this);
虽然在 C++ 中技术上是允许的,但这通常被认为是糟糕的形式,因为它丢弃了您设计中的所有 const 修饰符。除非您确实必须这样做,否则不要这样做,如果您发现自己不得不经常这样做,则表明您的设计存在问题。 C++ FAQ很好地涵盖了这一点。
如果您想进行更多阅读,这里有两个引用资料:
关于c++ - 关于 const 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1966319/