6.3多重继承

 

7.5 多继承

小结

 

7.5 多继承

 

一个类有多个直接某类的继承关系称为多继承。

多继承声明语法

class 类名1:访问控制 类名2,访问控制 类名3,...,访问控制 类名n

{

...//定义派生类自己的成员

}

 

7.5.1多继承的派生类构造和访问

多个基类的派生类构造函数可以用初始化调用基类构造函数初始化数据成员。

执行顺序与单继承构造函数情况类似。多个直接基类构造函数执行顺序取决于定义派生类时指定的各个继承基类的顺序。

一个派生类对象拥有多个直接或间接基类的成员。不同名成员访问不会出现二义性。如果不同的基类有同名成员,派生类对象访问时应该加以识别。

 

多重继承的派生类负责所有基类中的成员初始化。基类构造函数的调用顺序取决于定义派生类时指明的基类顺序。

 

 1 #include <iostream>
 2 
 3 class myclass1
 4 {
 5 public:
 6     void run(char *str)
 7     {
 8         system(str);
 9     }
10     myclass1()
11     {
12         std::cout << "myclass1 is created" << std::endl;
13     }
14     ~myclass1()
15     {
16         std::cout << "myclass1 is deleted" << std::endl;
17     }
18 };
19 
20 class myclass2
21 {
22 public:
23     int add(int a, int b)
24     {
25         return a + b;
26     }
27     myclass2()
28     {
29         std::cout << "myclass2 is created" << std::endl;
30     }
31     ~myclass2()
32     {
33         std::cout << "myclass2 is deleted" << std::endl;
34     }
35 };
36 
37 class myclass :public myclass1, public myclass2//基类构造函数的调用顺序取决于定义派生类时指明的基类顺序
38 {
39 public:
40     void print(char *str)
41     {
42         std::cout << str << std::endl;
43     }
44     myclass()
45     {
46         std::cout << "myclass is created" << std::endl;
47     }
48     ~myclass()
49     {
50         std::cout << "myclass is deleted" << std::endl;
51     }
52 };
53 
54 void main()
55 {
56     myclass *pmy1 = new myclass;
57 
58     delete pmy1;
59 
60     system("pause");
61 }

 

小结

 

继承是面向对象程序设计实现软件重用的重要方法。程序员可以在已有基类的基础上定义新的派生类。

单继承的派生类只有一个基类。多继承的派生类有多个基类。

派生类对基类成员的访问由继承方式和成员性质决定。

创建派生类对象时,先调用基类构造函数初始化派生类中的基类成员。调用析构函数的次序和调用构造函数的次序相反。

C++提供虚继承机制,防止类继承关系成员访问的二义性。

多继承提供了软件重用的强大功能,也增加了程序的复杂性。

 

转载于:https://www.cnblogs.com/denggelin/p/5668034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值