请看以下内容:
class node
{
int freq;
public:
node(const node &other)
{
freq = other.freq;
}
int getFreq()
{
return freq;
}
};
效果很好。但是,当我用freq = obj.freq
替换freq = obj.getFreq()
时,它会给我这个错误:
'int node::getFreq(void)': cannot convert 'this' pointer from 'const node' to 'node &'
为什么呢? freq
是私有成员,我们应该使用接口getFreq
来访问它。
答案 0 :(得分:4)
它不会编译,因为你的函数没有被声明为const
:
int getFreq() const; // accessor function that does not modify the object
因此,您无法使用const
实例const node &obj
来调用它。
访问obj.freq
有效,因为它适应const
实例,使obj.freq
无法修改 - 使用成员函数执行此操作将是无意义的(缺少成员函数内的代码{ {1}}说明符可能(并且应该)需要可修改的实体。