Re: C++ overriding/overriding的問題

看板Programming作者 (Alien)時間18年前 (2008/02/13 16:46), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/8 (看更多)
※ 引述《ya790206 (殘雲奪月)》之銘言: [43] : : 話說剛才發現另一個問題是 : : 對一個function 同時overrideing 和 overloading編譯會有錯 : : Class A 中定義method m(int i) : : Class B繼承A overload method m(int i) ^^^^^^^^ override 吧?! : : 又新定義 同名 m(char* c), 而且其中中還call m(int i) (等於用同名function包一層) : : 結果編譯時有錯誤 說找不到定義或重複定義.. [43] : 問題二 : 因為你在B類別定義了m(char *) : 他overriding了m(int ) : 所以類別B沒m(int ) : 你要呼叫類別A的m(int )須用 : A::m(5); : 有錯請指教 我沒記錯的話, 只要 child class 有定義了與 parent class 某 method 同名但 signature 不同的 method的 話就已經會構成 method shadowing (就算有 virtual 亦然) e.g. class Parent { public: void foo(int); } class Child { public: void foo(int, int); // cause shadowing of foo(int) } 從 Child 的角度看, 根本就不會再看見 foo(int). 如果在 child class 想 invoke foo(int) 便會出問題 Alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

02/13 16:48, , 1F
Parent::foo(int)?
02/13 16:48, 1F
文章代碼(AID): #17igvbt_ (Programming)
討論串 (同標題文章)
文章代碼(AID): #17igvbt_ (Programming)