第46课 继承中的构造与析构

思考:

如何初始化父类成员?

父类构造函数和子类构造函数有什么关系?

子类对象的构造:

子类构造函数对继承而来的成员进行初始化有两种方式:

1、直接通过初始化列表或者赋值的方式进行初始化

2、调用父类构造函数进行初始化

父类构造函数在子类中的调用方式:

显式调用只能在初始化列表进行。

如下:

 示例程序:

第30行会调用子类的无参构造函数Child(),而这个构造函数会默认调用父类的无参构造函数,因为父类没有默认构造函数,因此报错。

 在父类中加上无参构造函数即可:

继续完善:

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 
 6 class Parent 
 7 {
 8 public:
 9     Parent()
10     {
11         cout << "Parent()" << endl;
12     }
13     Parent(string s)
14     {
15         cout << "Parent(string s) : " << s << endl;
16     }
17 };
18 
19 class Child : public Parent
20 {
21 public:
22     Child()
23     {
24         cout << "Child()" << endl;
25     }
26     Child(string s) : Parent(s)
27     {
28         cout << "Child(string s) : " << s << endl;
29     }
30 };
31 
32 int main()
33 {       
34     Child c; 
35     Child cc("cc");
36     
37     return 0;
38 }

35行会触发26行的子类构造函数,在调用子类的构造函数前,先调用父类的Parent(string s)这个构造函数。

输出结果如下:

猜你喜欢

转载自www.cnblogs.com/wanmeishenghuo/p/9574731.html