水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:小白请教个关于继承的问题
楼主
|
xueyandy
|
2020-06-21 17:54:09
|
展开
父类有两个同名方法:A()和A(int c)。
当子类不覆盖A()和A(int c)时,子类的实例可以调用A()和A(int c)。
当子类覆盖了方法A()时,子类的实例调用方法A()的时候没问题,但是调用方法A(int c)的时候出问题了。
按理说,A(int c)是父类的方法,子类没有覆盖,子类调用A(int c)的时候应该默认调用父类的A(int c),但此时编译器(VS2017)会报错:“A函数不接受1个参数”。
这是出于什么考虑呢?个人认为,本质上A()和A(int c)是两个独立的方法,A()是否被覆盖为什么会影响A(int c)的调用呢?
解决办法当然也是有的:把A(int c)也覆盖掉就好了。只是不明白为啥要这么设计?
--
FROM 219.142.145.*
3楼
|
xueyandy
|
2020-06-21 23:22:36
|
展开
了解了,谢谢!
【 在 libgcc 的大作中提到: 】
: 具体为什么这么设计不知道,反正c++标准里是这么说的
:
:
: ....................
- 来自「最水木 for iPhone 6s Plus」
--
FROM 219.142.145.*
4楼
|
xueyandy
|
2020-06-21 23:24:13
|
展开
好的,我去看看,谢谢!
【 在 vonNeumann 的大作中提到: 】
: 为什么要这样设计可以看这里的解释:
:
https://stackoverflow.com/questions/1628768/why-does-an-overridden-function-in-the-derived-class-hide-other-overloads-of-the
:
: ....................
- 来自「最水木 for iPhone 6s Plus」
--
FROM 219.142.145.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版