Re: C++ overriding/overriding的問題
※ 引述《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
02/13 16:48, 1F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章