派生类的构造【C++继承】
生活随笔
收集整理的這篇文章主要介紹了
派生类的构造【C++继承】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
- 構(gòu)造規(guī)則
- 語法格式
- 構(gòu)造順序
- 圖示
- 說明
- 構(gòu)造順序
- 子類構(gòu)造器實戰(zhàn)
- 層次設(shè)計感悟
構(gòu)造規(guī)則
派生類中,由基類繼承而來的成員的初始化工作,由基類的構(gòu)造函數(shù)完成。
派生類中新增的成員在派生類的構(gòu)造函數(shù)中初始化。
語法格式
派生類名::派生類名(總參列表) :基類名(參數(shù)表),內(nèi)嵌子對象(參數(shù)表) {派生類新增成員的初始化語句; //也可出現(xiàn)地參數(shù)列表中 }構(gòu)造順序
圖示
說明
由于子類中,包含了兩部分內(nèi)容,一部分來自父類,一部分來自子類。
父類的部分,要由調(diào)用父類的構(gòu)造器來完成。
子類的部分,在子類的構(gòu)造器中來完成始化。
子類中,有內(nèi)嵌的子對象也需要構(gòu)造。
構(gòu)造順序
代碼演示:
#include <iostream>using namespace std;class C { public:C(int c):cc(c){cout << "C()" << endl;}void displayC(){cout << "cc = " << cc << endl;}private:int cc; };class A { public:A(int a):aa(a){cout << "A()" << endl;}void displayA(){cout << "aa = " << aa << endl;}private:int aa; };class B:public A { public:B(int a,int b,int c):A(a),c(c),bb(b){cout << "B()" << endl;}C c;void displayB(){cout << "bb = " << bb << endl;} private:int bb; };int main() {B b(1,2,3);b.displayA();b.displayB();b.c.displayC();return 0; }運行結(jié)果:
子類構(gòu)造器實戰(zhàn)
代碼演示:
#include <iostream>using namespace std;class Student { public:Student(string name, int num, char sex):_name(name), _num(num), _sex(sex) {}void dump(){cout << "name:" << _name << endl;cout << "num :" << _num << endl;cout << "sex :" << _sex << endl;}private:string _name;int _num;char _sex; };class Birthday { public:Birthday(int y, int m, int d):_year(y), _month(m), _day(d){}void disBirthday(){cout << "birth date:" << _year << ":" << _month << ":" << _day << endl;} private:int _year;int _month;int _day; };class Graduate :public Student { public:Graduate(string name, int num, char sex, float salary, int y, int m, int d):Student(name, num, sex),birth(y, m, d),_salary(salary){}void dis(){dump();cout << "salary:" << _salary << endl;birth.disBirthday();}private:float _salary;Birthday birth; }; int main() {Student s("zhao", 1001, 's');s.dump();Graduate g("sun", 2001, 's', 10000, 1990, 9, 19);g.dis();return 0; }運行結(jié)果:
層次設(shè)計感悟
繼承層次化的設(shè)計,本層次初始化,僅需要考慮上次層,而不是考慮上上層次或是更上層次。
代碼演示:
運行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的派生类的构造【C++继承】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类与面向对象的精华:继承【C++继承】
- 下一篇: s3c2440移植MQTT