需要澄清const成员函数
|
我对为什么编译和运行此代码有些困惑:
class A
{
private:
int* b;
public:
A() : b((int*)0xffffffff) {}
int* get_b() const {return this->b;}
};
int main()
{
A a;
int *b = a.get_b();
cout<<std::hex<<b<<endl;
return 0;
}
运行此代码的输出也为FFFFFFFF
,这对我来说是意外的。 this->b
不应该返回const int*
,因为它在const成员函数中吗?因此return
行应生成一个编译器错误,试图将const int*
转换为int*
显然,在我对const成员函数表示什么的认识上存在差距。
如果有人可以帮助我缩小差距,我将不胜感激。
没有找到相关结果
已邀请:
4 个回复
混侩闯空坷
(从const函数看),这是完全不同的。 指针是const,而不是指向的对象。
膏焦凑
部分只是说,当
指针(即被调用其的对象)为const时,允许调用该函数。它与返回值无关。
}
桔适丛
响摔衅幸
会告诉编译器“嘿,我保证不会修改
!\”。您的方法只是一个访问器。 参见C ++ FAQ LITE 18.10