【发布时间】:2014-04-20 19:01:22
【问题描述】:
考虑下面的代码,在这种情况下输出是:
f 非常量
g 常量
这有点令人困惑,因为 someClass 正在从其 const 函数调用 const 数据成员的非 const 函数:
#include <iostream>
using namespace std;
class Inner
{
public:
void f() const { cout<< "f const" <<endl; }
void f() { cout<< "f non const" <<endl; }
};
class someClass
{
Inner * const obj2;
public:
someClass():obj2(){}
void g() {obj2->f(); cout<< "g non const" <<endl; }
void g() const {obj2->f(); cout<< "g const" <<endl; }
};
int main()
{
const someClass a;
a.g();
}
为什么在这种情况下 someClass 会调用非 const 函数?
【问题讨论】:
-
因为
*obj2不是常量。 -
你至少应该发布这个程序的输出。
-
问题中提到了输出
-
嗯,好的,我改进了格式,使其更加突出。