【发布时间】:2019-03-07 12:54:55
【问题描述】:
考虑以下代码sn-p:
class A
{
public:
void nonConstFun()
{
}
};
class B
{
private:
A a_;
A * pA_;
public:
void fun() const
{
pA_->nonConstFun();
//a_.nonConstFun(); // Gives const related error
}
};
int main()
{
B b;
b.fun();
}
在这里,我希望编译器会因为在 B::fun() 内调用 A::nonConstFun() 缺乏常量而失败,而不管 A 对象的类型如何。
但是编译器会抱怨对象,而不是指针。为什么? 我在 Windows 10 上使用 VS2017。
【问题讨论】:
-
一个const成员函数意味着它不会改变这个对象的内部状态,而对象的引用可能会改变。
标签: c++ pointers constants transitive-const