C++中类的构造函数调用顺序
来源:互联网 发布:c语言数组最多 编辑:程序博客网 时间:2024/05/17 08:22
- C++子类和父类的构造函数调用顺序
#include <iostream>using namespace std;//子类class base{public:base(){cout<<"i am base constuction!"<<endl;}};//父类class drived : public base{public:drived(){cout<<"i am drived constuction!"<<endl;}};int main(){drived d;//输出结果/*i am base constuction!i am drived constuction!Press any key to continue*/return 0;}
由输出结果我们可以看到,先调用的是base类的构造函数,再调用了drived类的构造函数,也就是说,在声明子类实例的时候,是会先调用父类的构造函数的。这个很好理解,子类是包含了父类的信息的,所以要构造子类,必须先构造父类的信息,然后加入一些子类的新信息。
成员类的构造函数调用顺序
#include <iostream>using namespace std;class son{public:son(){cout<<"i am son constuction!"<<endl;}};class family{public:family(){cout<<"i am family constuction!"<<endl;}son jack;};int main(){family happyfamily;//输出结果/*i am son constuction!i am family constuction!Press any key to continue*/return 0;}
从上面的结果我们科看到,先调用的是构造函数。这是为什么?因为类中含有成员类时,先要给成员类申请空间,先调用成员类的构造函数,然后再调用自身的构造函数。
#include <iostream>using namespace std;//父亲姓名class name{public:name(){cout<<"i am name constuction!"<<endl;}};//子类class base{public:base(){cout<<"i am base constuction!"<<endl;}};//父类class drived : public base{public:drived(){cout<<"i am drived constuction!"<<endl;}name drivedname;};int main(){drived d;//输出结果/*i am base constuction!i am name constuction!i am drived constuction!Press any key to continue*/return 0;}
上面的例子是声明了一个name类,一个base类,一个drived类,其中drived类是从base类派生,且drived类中声明了name类的一个实例。
那么根据我们上面的分析,我们声明了drived类之后,先会调用父类构造函数,也就是输出i am base construction,然后调用自身的成员类构造函数,也就是i am name construction,最后调用自身的构造函数,也就是i am drived construction。
同理,如果我们在父类base类中声明了name成员类的话,顺序会是name->base->drived。我下面给出测试例子:
#include <iostream>using namespace std;//父亲姓名class name{public:name(){cout<<"i am name constuction!"<<endl;}};//子类class base{public:base(){cout<<"i am base constuction!"<<endl;}name drivedname;};//父类class drived : public base{public:drived(){cout<<"i am drived constuction!"<<endl;}};int main(){drived d;//输出结果/*i am name constuction!i am base constuction!i am drived constuction!Press any key to continue*/return 0;}
本文来自IT部落格,转载请注明,http://www.itbuluoge.com,~致力于编程、算法、数据库技术的分享
0 1
- 看C++中构造函数的调用顺序
- 【c++】构造函数调用顺序的研究
- c++中 子类父类的构造函数调用顺序
- C++中类的构造函数调用顺序
- C++中类的构造函数调用顺序
- C++中类的构造函数调用顺序
- java 类中 构造函数的相互调用 顺序
- 类的构造函数调用顺序是什么?
- 派生类构造函数的调用顺序
- 派生类构造函数的调用顺序
- C++ 类构造函数的调用顺序
- 构造函数的调用顺序
- 派生类构造函数和析构函数的调用顺序(C++)
- Java中继承关系的构造函数的调用顺序
- c++ 中构造函数的调用先后顺序
- C++继承关系中构造函数的调用顺序
- 关于C++中构造函数的调用顺序
- java关于继承中构造函数的调用顺序
- VC++时经常会遇到链接错误LNK2001
- Android模拟器的ip获取以及模拟器之间socket通信
- 在wince7.0上安装sqlce3.5
- 【小白笔记】PHP学习之路 (14) --数组(4)
- Spring定时任务的几种实现
- C++中类的构造函数调用顺序
- 获得程序当前目录
- substr和subString的区别
- 失眠 的解决方案—转自知乎
- Selenium私房菜系列4 -- Selenium IDE的使用
- 走入ios的世界
- Android开发之获取APK的包名
- Hadoop执行Job时因超时自动kill原因及解决方案
- 在数字时代,你的文件和记忆不再真正属于你,他们属于“云”。