猿问
菱形继承时 若没有使用条件编译及虚继承, 为什么会出现重定义啊!!
慕粉3379761
浏览 963
回答 1
1回答
MadMarical
你好。假设有a类为根类,另有两个类b,c分别继承了a,那么同时b,c也继承了a中的成员以及成员函数。此时通过多重继承的方法让d继承自b,c这就产生了所谓的菱形继承。假设a中有一公有方法init();b,c继承自a也都有init方法;d继承自b,c;此时假设用d生成对象x,x调用init()。编译器将会产生疑惑,这个init到底是b中的init还是c中的init,因为两者看上去是一样的(都继承自a)。正是由于这个原因,所以才使用虚继承,保证后面不出现二义性。
2
0
1
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
我要回答