2
在此處出現混淆。即使在初始化列表中傳遞this
,程序也正在編譯並運行成功。 我的印象是,在這裏通過this
編譯器應該給出一些錯誤,因爲這裏沒有創建對象。使用此指針的初始化列表
兩個cout
s的輸出是相同的;即他們擁有相同的地址。
我知道這是不正確的編程方法,但是到底發生了什麼?
class foo
{
public:
foo():myself(this) {}
foo * myself;
};
int main()
{
foo f;
cout<<f.myself<<endl;
cout<<&f<<endl;
return 0;
}