[問題] 可否 Override 爺爺?

看板C_and_CPP作者 (肥子民)時間14年前 (2012/02/12 01:17), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
開發平台(Platform): C++ 問題(Question):孫子可否Override 爺爺的function? 簡短範例: //------------------------------------------ class A { public: virtual void QQ() { printf("A"); } }; class B : public A { }; class C : public B { public: void QQ() { printf("C"); } }; int _tmain(int argc, _TCHAR* argv[]) { A *a = new C(); a->QQ(); //印出 C system("PAUSE"); return 0; } //------------------------------------------- 有一個孫子 C 爸爸 B 爺爺 A 請問孫子可以Override 到爺爺的Function 嗎? 印出來跟我要的答案一致 ,但是總覺得哪裡怪怪的.... 因為腦筋有點打結了...為求周全,還是上來發問一下 請各位大大幫忙解惑 感激不盡 -- !!!!▁▁▁▁ ▁▁▁▁ 尬 ▕ ⊙ ⊙ ▏老婆對不起啦 ▕ = = ▏拎去 ▕▼▼▼▼▏小的下次不敢 ▕▼▼▼▼▏鄒跪 ▕▲▲▲▲▏再亂寫文章了 ▕▲▲▲▲▏罵主 /██╯ 請老婆原諒! m@(。人。)> 機 xicco || ──╯ / \ ─╯ 板 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.184.199 ※ 編輯: cooljony0109 來自: 111.240.184.199 (02/12 01:18)

02/12 01:44, , 1F
簽名檔的身材好奇怪啊XDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
02/12 01:44, 1F

02/12 02:35, , 2F
virtual function 在繼承的體系下都是 virtual
02/12 02:35, 2F

02/12 02:36, , 3F
所以 C 裡面的 void QQ(); 其實是 virtual void QQ()
02/12 02:36, 3F

02/12 06:58, , 4F
櫻桃友藏表示: 躺著也中槍
02/12 06:58, 4F

02/12 08:40, , 5F
因為是virtual func(), A pointer會從A往 child方向找一樣
02/12 08:40, 5F

02/12 08:41, , 6F
的func() name~直到C~如果有找到override的func()就使用它
02/12 08:41, 6F

02/12 08:42, , 7F
沒有的話就用A的function~但是如果A是pure virtual func()
02/12 08:42, 7F

02/12 08:42, , 8F
那child就要override才行~給你參考囉^^
02/12 08:42, 8F

02/12 10:03, , 9F
這應該不算override,說是多型比較適合
02/12 10:03, 9F

02/12 10:27, , 10F
嗯嗯~所有的動作都只有一個目的~就是支援多型~
02/12 10:27, 10F

02/13 01:37, , 11F
感謝大大解惑,收受益良多
02/13 01:37, 11F
文章代碼(AID): #1FDgAZrP (C_and_CPP)