C++,关于类的继承.为什么可以多次间接继承同一个基类的吗?

firendlys firendlys 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:
class a1{};
class a2:public a1{public :int i;};
class a3:public a1{public: int i;};
class a4:public a3,a2{};

这段代码可以编译通过.

3个简单的问题:

1) a4通过继承 a3 和 a2, 间接继承了2次 a1.为什么这样不会出错呢?

2) a2 和 a3 中同时定义了一个公共变量 int i;那么在a4中使用 i ,它使用的是 a2中的i 还是 a3中的i ?
还是 a2 和 a3 的 i 在 a4 看来,本来就是同一个变量?

3) a4 中,有没有办法分别调用 a2.i 和 a3.i ?
...全文

相关推荐

C/C++ 公有继承、保护继承和私有继承的对比详解

C/C++ 公有继承、保护继承和私有继承的区别    在c++的继承控制中,有三种不同的控制权限,分别是public、protected和private。定义派生类时,若不显示加上这三个关键字,就会使用默认的方式,用struct定义的类是默认public继承,class定义的类是默认private继承。这和Java有很大的不同,Java默认使用public继承,而且只有公有继承。         1.使用public继承时,派生类内部可以访问基类中public和protected成员,但是类外只能通过派生类的对象访问基类的public成员。         (1)基类的public成员在派生类

weixin_38668754

C间接继承-C教程共2页.pdf.zip

C间接继承_C教程共2页.pdf.zip

CyMylive.

C++、类的继承应用示例

定义一个Point几何图类,派生出Rectangle矩形类和Circle圆类,计算各派生类对象的面积area() 解读: 矩形类和圆类均继承几何图类的成员方法与成员参数,并通过运用几何图类的方法实现自己的面积计算方法area()。

㊣ç#

C++类继承内存布局详解图(一目了然)

看了这个内存布局图详解之后,对于C++的了解更加深刻了,之前不懂得一头雾水的东西全都清楚了。

不是那回事儿

C++ 虚继承对基类构造函数调用顺序的影响

继承作为面向对象编程的一种基本特征,其使用频率非常高。而继承包含了虚拟继承和普通继承,在可见性上分为public、protected、private。可见性继承比较简单,而虚拟继承对学习c++的难度较大。   首先,虚拟继承与普通继承的区别有:   假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;   假设derived 虚继承自base类,那么derivd与base是一种“has a”的关系,即derived类有一个指向base类的vptr。(貌似有些牵强!某些编译器确实如此)   因此虚

weixin_38691641
评论 5
收藏 已收藏
分享
返回顶部
firendlys
C++ 语言 65,214 成员 250,514 内容