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)

 

posted @ 2018-01-12 17:54  小油菜1  阅读(411)  评论(0编辑  收藏  举报