77范文网 - 专业文章范例文档资料分享平台

第5章 继承与派生(5)

来源:网络收集 时间:2018-11-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

public: C(int a):B(a){cout<<\ //负责直接基类B的构造 };

void main() { C c(3); }

如果类B中也有一个参数,那么这样程序该是什么样的呢? //===================================== // 自编

//===================================== #include #include using namespace std;

//------------------------------------- class A{ protected: int x; public: A(int a){cout<<\};

class B:public A{ protected: int x; public: B(int a,int b):A(a){cout<<\};

class C:public B{ protected: int x; public: C(int a,int b):B(a,b){cout<<\};

void main() { C c(3,4); }

再如果C中也有一个参数呢?

//===================================== // 自编

//===================================== #include #include using namespace std;

//------------------------------------- class A{ protected: int x; public: A(int a){cout<<\};

class B:public A{ protected: int x; public: B(int a,int b):A(a){cout<<\};

class C:public B{ protected: int x; public: C(int a,int b,int c):B(a,b){cout<<\};

void main() { C c(3,4,5); }

建立派生类对象时,构造函数的执行顺序如下: ? 调用基类的构造函数,如果基类构造调用在初始化列表中存在,就按初始化列表的

调用形式做;否则,就调用相应的基类无参构造函数。如基类上面还有基类,则会调用上面的基类构造函数。依次上溯。

? 调用子对象的构造函数,调用顺序按类定义中对象声明的顺序。 ? 调用派生类的构造函数。 下面我们来通过实例说明。

//===================================== //自编

//===================================== #include #include using namespace std;

//------------------------------------- class Member{ public: Member(int x){cout<<\};//----------------------------------- class S{ public: S(int x){cout<<\

};//----------------------------------- class G: public S{ Member meb; public: G(int x,int y):meb(y),S(x){cout<<\ };//----------------------------------- int main(){ G g(1,2);

}//==================================== 运行结果是: S 1 Member 2 G

从结果可以看到,是先执行基类构造函数,再执行子对象的构造函数,再执行派生类的构造函数。

如果基类又有基类时,也就是一个多层的结构时,且基类又有子对象的情况会怎么样? //===================================== //自编

//===================================== #include #include using namespace std;

//------------------------------------- class Member1{ public: Member1(int x){cout<<\};//----------------------------------- class Member2{ public: Member2(int x){cout<<\};//----------------------------------- class S1{ public: S1(int x){cout<<\ \};//----------------------------------- class S11:public S1{ public: S11(int x1,int x2):S1(x1){cout<<\ \};//-----------------------------------

class S111: public S11{ Member1 meb1;

Member2 meb2; //声明顺序是meb1 meb2 public:

S111(int x1,int x2,int x3,int x4):S11(x1,x2),meb2(x3),meb1(x4){cout<<\};//----------------------------------- int main(){

S111 s(1,2,3,4);

}//==================================== 运行结果: S1 1 S11 2 Member1 4 Member2 3

下面的程序是对上面程序的修改,考虑了无参构造函数以及有析构函数的情况。 //===================================== //自编

//===================================== #include #include using namespace std;

//------------------------------------- class Member1{ public: Member1(int x){cout<<\ ~Member1(){cout<<\};//----------------------------------- class Member2{ public: Member2(int x){cout<<\ ~Member2(){cout<<\};//----------------------------------- class S1{ public: S1(){cout<<\ S1(int x){cout<<\ \ ~S1(){cout<<\};//----------------------------------- class S11:public S1{ public: S11(){cout<<\ S11(int x1){cout<<\ \ S11(int x1,int x2):S1(x1){cout<<\ \ ~S11(){cout<<\};//-----------------------------------

class S111: public S11{ Member1 meb1;

Member2 meb2; public: S111(int x1,int x2):meb2(x1),meb1(x2){cout<<\ S111(int x1,int x2,int x3):S11(x1),meb2(x2),meb1(x3){cout<<\ S111(int x1,int x2,int x3,int x4):S11(x1,x2),meb2(x3),meb1(x4){cout<<\ ~S111(){cout<<\};//----------------------------------- int main(){ S111(1,2);

cout<<\ S111(1,2,3);

cout<<\ S111 s(1,2,3,4);

}//==================================== 运行结果为: S1 S11

Member1 2 Member2 1 S111 ~S111 ~Member2 ~Member1 ~S11 ~S1

------------------------------------------- S1 S11 1 Member1 3 Member2 2 S111 ~S111 ~Member2 ~Member1 ~S11 ~S1

------------------------------------------- S1 1 S11 2 Member1 4 Member2 3 S111 ~S111 ~Member2

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第5章 继承与派生(5)在线全文阅读。

第5章 继承与派生(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/293444.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: