• 42)子类继承 有参父类 和无参父类


    1)  子类继承有参的父类,那么  必须在子类的  构造函数的初始化列表那里,给父类赋值,比如说

        父类 Student 的构造函数  是   Student(int  age  ,string  name)

        然后我的子类的构造函数 须是:

                Student3(int  age ,string   name,int   sorce):Student(age,name)

                {                          }

     2)总之,不管你是  有参父类构造函数  还是无参构造函数  那么就有了   只要实例化子类,就会调用父类的构造函数

        为啥--> 因为子类的内存区域,有一块属性内存是父类的相关属性,所以啊   你实例化子类,和父类相关的那块内存,

              要用父类的构造函数来初始化,剩下的,靠子类自己的构造函数   

     1 #include<iostream>
    2 using namespace std;
    3 class student 4 { 5 public: 11 student() 12 { 15 cout<<"大家好。我是父类的构造函数"<<endl; 16 } 17 private: 18 int a; 20 };

    21 class ss:public student 22 { 23 public:29 ss() 30 { 31 cout<<"大家好,我是子类的构造函数"<<endl; 32 } 33 34 }; 35 int main() 36 { 37 38 ss cc; 42 }

          最终的运行结果:

        

      然后  有参的  父类:
      

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 class student
     6 {
     7 public:
     8     student(int a,int b)
     9     {
    10         cout<<"大家好。我是父类的构造函数"<<endl;
    11     }
    12 private:
    13     int a;
    14 };
    15 
    16 
    17 class ss:public student
    18 {
    19 public:
    20     ss(int a,int b):student(a,b)
    21     {
    22         cout<<"大家好,我是子类的构造函数"<<endl;
    23     }
    24 
    25 };
    26 int main()
    27 {
    28     
    29     ss cc(2,3);
    30 }

    3)派生类(子类)      基类(父类)

       

        

     

    4)就是  你的子类 在写构造时   

        student3()   这样的子类构造  会默认调用父类的无参构造     (只要实例化子类,肯定会调用父类的构造函数,所以 要是有参构造,必须在子类的构造函数初始化列表给初始化)

      但是  你可以写一个 无参的父类构造,  来 重载那个有参的,这样  就不用在你的子类构造函数初始化列表那里 给初始化  父类了

    5)

  • 相关阅读:
    为什么世界上没有安全的工作?
    GIT学习----第六节:撤销修改
    vue-cli中koa输出console.log报错的解决方案
    简易版promise源码实现
    bind函数的模拟实现
    Es6语法实现的转盘抽奖效果——可配置转盘的抽奖概率
    探寻Object.assign内部的奥秘
    promise基本使用——简单的运动效果
    数组sort方法源码解析
    ES5数组一些常用的方法源码实现
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8277079.html
Copyright © 2020-2023  润新知