我,为什么这个代码可以编译和运行有点糊涂: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
以及...意想不到的我。由于它在一个const成员函数中,因此this->b
不应该返回const int*
?因此return
线应该产生一个编译器铸造错误尝试投放const int*
到int*
显然,在我什么const成员函数意味着知识这里有一个差距。 如果有人能帮我弥补这个空白,我会很感激。
对。这解释了它。所以如果b是int并且get_b会尝试返回this-> b,那么我会得到cast转换错误。对? – eladidan 2011-04-27 15:11:59
如果b是一个int并且你试图返回&b,编译器会抱怨,是的。 – 2011-04-27 15:14:50
对不起,对,&(this-> b),谢谢 – eladidan 2011-04-27 15:17:43