作者adrianshum (Alien)
看板Programming
标题Re: C++ overriding/overriding的问题
时间Wed Feb 13 16:46:28 2008
※ 引述《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
1F:推 legnaleurc:Parent::foo(int)? 211.74.131.219 02/13 16:48