首页 > 解决方案 > c++ 为什么在 const 函数的成员指针上调用非 const 函数是合法的?

问题描述

// Example program
using namespace std;

class FOOIMPL {
 public:
  void fooimpl() {}
};

class FOO {
 public:
  void foo() const { fooimpl_->fooimpl(); }
private:
  FOOIMPL* fooimpl_;
};

int main()
{
  FOO foo;
  foo.foo();
}

我知道这符合规范,因为 fooimpl_ 未声明为FOOIMPL* const fooimpl_;

但我想知道,为什么规范允许常量函数在成员变量上调用非常量函数?把它变成一个错误没有意义吗?

标签: c++constantsspecifications

解决方案


推荐阅读