因此,我的教授喜歡用我們應該弄清楚的論文中的代碼來測試我們。我不打算髮布代碼,因爲我沒有在尋找答案,這只是他用來混淆我們的一件事,當他初始化一個類的對象,然後初始化另一個類的指針指向上述目的。它讓我感到困惑,這是一個特殊的問題,我不知道如何去尋找它。例如:指向類E成員的D類指針
class A {
// etc
}
...
class D {
void fy(etc, etc, etc) {}
// etc
}
class E: public D {
void fy(etc, etc, etc) {}
// etc
}
main() {
E e
D *d = &e
d->fy(15,25)
//everything else
確實「d-> fy()」做了D或E的fy()函數嗎?如果D'fy()函數是虛擬的,那麼它會做E嗎?
當指針從一個類指向另一個類的對象時,指針會做什麼?我知道這個問題以前可能已經得到了答案,但我無法在任何地方找到它,所以我甚至會感激只是被引導到答案。非常感謝你。
查看Liskov替換原理,'E'是'D',所以你可以使用'E *'並將它存儲在'D *'中。 – 2014-09-19 23:14:08