C++ 类的继承三(继承中的构造与析构)

//继承中的构造与析构
#include<iostream>
using namespace std;

/*
继承中的构造析构调用原则
1.子类对象在创建时会首先调用父类的构造函数
2.父类构造函数执行结束后,执行子类的构造函数
3.当父类的构造函数有参数时,需要在子类的初始化列表中显示调用
4.析构函数调用的先后顺序与构造函数相反

继承与其他类做成员变量混搭的情况下,构造和析构调用原则
1.先构造父类,在构造成员变量,最后构造自己
2.先析构自己,再析构成员变量,最后析构父类
*/

class PointA{
public:
    PointA(int a,int b){
        x = a;
        y = b;
    }
    void PrintA(){
        cout << "PointA:x=" << x << ";y=" << y << endl;
    }
private:
    int x;
    int y;
};

class PointC{
public:
    PointC(int a){
        this->a = a;
    }
    void PrintS(){
        cout << "PointC:a=" << a << endl;
    }
private:
    int a;
};

class PointB :public PointA{
public:
    //调用父类构造函数  调用成员属性的有参构造函数
    PointB(int a, int b, int c) :PointA(a, b), ct(a)
    {
        this->c = c;
    }
    void Test1(){
        this->ct.PrintS();
    }
private:
    int c;
    PointC ct;
};


void ProtectA(){
    PointB pb1(1,1,2);
    pb1.PrintA();
    pb1.Test1();
}

void main(){
    ProtectA();
    system("pause");
}

 

posted on 2016-06-29 22:15  寒魔影  阅读(477)  评论(0编辑  收藏  举报

导航