0
我正在學習使用C++的OOP,並遇到了我不太明白的情況。C++繼承和成員訪問問題
{瞭解公共數據成員的貧窮實踐和假設指針不是NULL}:
...
class Foo {
public: int a = 0;
}
class Bar: public Foo {
public: int a = 1;
}
void display (Foo * in) {
if(in->a)
cout << "I'M A BAR" << endl;
else
cout << "I'M A FOO" << endl;
}
int main() {
Foo * BAR = new Bar;
display(BAR); //Displays "I'M A FOO"
return 0;
}
,多一點修修補補我發現,如果我改用構造函數來設置非const int的一個值後, 0和1,並且還輸出構造函數的值,我發現該值實際上在BAR中被設置爲1,但在顯示函數內被評估爲0。
如果這沒有意義,我很抱歉,我懷疑自己真正理解的問題是否正確,但我想知道爲什麼BAR不會像顯示內部的Bar一樣對待,以及如何讓它這樣做(如果可能,仍然使用基類指針作爲參數)。
這正是我想要做的,非常感謝你! – Flexo1515 2013-04-25 22:41:12
@ user1404053:很酷。但是,不要以真實的代碼來做這件事,而應該使用虛擬功能。 :-) – 2013-04-25 22:42:12