继承中构造函数与析构函数

来源:互联网 发布:淘宝网小开衫 编辑:程序博客网 时间:2024/06/05 14:08
#include <iostream>using namespace std;class Y{private:int i;public:Y(){}Y(int ii) : i(ii) {}};class X : public Y  // 这个是继承,在继承的时候,X 类中含有的函数与Y 函数相同,则将Y类的此函数屏蔽掉,无论参数是否相同,只要函数一样就将其屏蔽掉,{private:int i;float f;char c;char* s;public:X() : Y(10), i(7), f(1.6), c('b'), s("xiao")  // 在冒号后面是进行初始化,是初始化列表,{cout << "X()" << endl;}};class Base1{public:Base1(int){cout << "Base1 constructor\n";}~Base1(){cout << "Base1 destructor\n";}};class Member1{public:Member1(int){cout << "Member1 constructor\n";}~Member1(){cout << "Member1 destructor\n";}};class Member2{public:Member2(int){cout << "Member2 constructor\n";}~Member2(){cout << "Member2 destructor\n";}};class Member3{public:Member3(int){cout << "Member3 constructor\n";}~Member3(){cout << "Member3 destructor\n";}};class Member4{public:Member4(int){cout << "Member4 constructor\n";}~Member4(){cout << "Member4 destructor\n";}};class Derived1 : public Base1{Member1 m1;Member2 m2;public:Derived1(int) : m1(1), m2(2), Base1(3){cout << "Derived1 constructor\n";}~Derived1(){cout << "Derived1 destructor\n";}};class Derived2 : public Derived1{Member3 m3;Member4 m4;public:Derived2() : m4(1), m3(2), Derived1(4)  // 调用此类的构造函数的时候先要执行初始化列表,要先执行继承的构造函数再执行m3 和 m4{cout << "Derived2 constructor\n";}~Derived2(){cout << "Derived2 destructor\n";}};int main(){//X x;Derived2 d2;return 0;}

0 0