我,爲什麼這個代碼可以編譯和運行有點糊塗: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