C++学习之路派生类的构造函数

Posted CRAZY_HENRY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习之路派生类的构造函数相关的知识,希望对你有一定的参考价值。

三、多层继承的派生类

1.多层继承的派生类只需在构造函数的初始化列表中写出直接基类的构造函数即可

 1 class student
 2 {
 3 public:
 4     student(int n, string nam)
 5     {
 6         num = n; name = nam;
 7     }
 8 };
 9 class student1 : public student
10 {
11 public:
12     student1(int n, string nam, int a) :student(n, nam) {age = a;}
13 };
14 class student2 : public student1
15 {
16 public:
17     student2(int n, string nam, int a, int s) :student1(n, nam, a) {score = s;}
18 };

   基类:student(int n, string nam)

  一级派生: student1 ( int n, string nam, int a ):student (n,nam)

  二级派生:student2 ( int n, string nam, int a, int s ): student1 (n,nam,a)

2.注意!!不要写成: 

  student2 ( int n, string nam, int a, int s ): student (n, nam), student1(n, nam, a)//错误!!!

 

四、派生类的构造函数总结

1.student(所有的形参表写在这里):这里能写的东西只有(1)基类构造函数(2)内嵌对象的初始化列表(3)该类的新增数据成员{函数体里能写的东西有(1)基类中能在派生类中访问的数据的赋值(2)派生类新增数据成员的赋值(3)其他想加的语句}

2.在初始化列表中的执行顺序为(1)直接基类构造函数(如果没有显式写出的话,系统会自动调用一个无参构造函数)(2)内嵌对象对应的类的构造函数(具体调用哪一个取决于对象的参数形式)(3)其他语句

3.从本质上来讲,构造函数的作用在于初始化该类中的数据成员,但是达到同样的目的的方法有很多,比如我可以在类中写一个函数,给数据成员赋值;但是,最简单和可靠的方式还是调用构造函数,所有构造函数最终是要将所有的数据成员都初始化。(对于有些被继承了之后访问不了的数据成员怎么办?)

以上是关于C++学习之路派生类的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

C++学习之路派生类的构造函数

派生类的 C++ 构造函数,其中基类包含类成员

C++基类和派生类的构造函数

C++基类和派生类的构造函数

C++入门派生类和基类的构造/析构函数关系

在其派生类C++的构造函数中调用基类的构造函数[重复]