C++类的构造顺序
2015-07-28 17:46
459 查看
C++类的构造顺序如下:
一、先执行静态成员的构造函数,如果静态成员只是在类定义中声明了,而没有实现,是不用构造的。必须始化后才执行其构造函数。
二、任何虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
三、任何抽象基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
四、任何非虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
五、任何成员对象的构造函数按照它们声明的顺序构造
六、类自己的构造函数
输出结果:
类StaticMemberClass的构造函数
类VirtualBase的构造函数
抽象类AbstractClass的构造函数
类CommonBaseClass的构造函数
类CommonMemberClass的构造函数
类ClassLocal的构造函数
请按任意键继续. . .
构造顺序步骤:静态成员--虚基类---抽象类---基类--成员变量--类自身的构造函数
一、先执行静态成员的构造函数,如果静态成员只是在类定义中声明了,而没有实现,是不用构造的。必须始化后才执行其构造函数。
二、任何虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
三、任何抽象基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
四、任何非虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)
五、任何成员对象的构造函数按照它们声明的顺序构造
六、类自己的构造函数
#include <iostream> #include <string> using namespace std; //抽象类AbstractClass(含有纯虚函数的类) class AbstractClass { public: AbstractClass() { cout<<"抽象类AbstractClass的构造函数"<<endl; } //纯虚函数fun virtual void vrFun() = 0; }; //虚基类VirtualBase class VirtualBase { public: VirtualBase() { cout<<"类VirtualBase的构造函数"<<endl; } }; //普通类CommonClass class CommonBaseClass { public: CommonBaseClass() { cout<<"类CommonBaseClass的构造函数"<<endl; } }; class CommonMemberClass { public: CommonMemberClass() { cout<<"类CommonMemberClass的构造函数"<<endl; } }; //普通类StaticMemberClass class StaticMemberClass { public: StaticMemberClass() { cout<<"类StaticMemberClass的构造函数"<<endl; } }; //普通类StaticMemberClass class StaticMemberClassNotInitial { public: StaticMemberClassNotInitial() { cout<<"类StaticMemberClassNotInitial的构造函数"<<endl; } }; class ClassLocal: virtual public VirtualBase, public AbstractClass,public CommonBaseClass { public: ClassLocal():VirtualBase(),AbstractClass(),CommonBaseClass() { cout<<"类ClassLocal的构造函数"<<endl; } void vrFun() { } private: CommonMemberClass m_CommonMemberClass; static StaticMemberClass m_StaticMemberclass; static StaticMemberClassNotInitial m_StaticMemberClassNotInitial; }; StaticMemberClass ClassLocal::m_StaticMemberclass; int main(int argc, char* argv[]) { ClassLocal class_local; return EXIT_SUCCESS; }
输出结果:
类StaticMemberClass的构造函数
类VirtualBase的构造函数
抽象类AbstractClass的构造函数
类CommonBaseClass的构造函数
类CommonMemberClass的构造函数
类ClassLocal的构造函数
请按任意键继续. . .
构造顺序步骤:静态成员--虚基类---抽象类---基类--成员变量--类自身的构造函数
相关文章推荐
- 黑马程序员--学习C语言循环体结构
- #编程指南#C++ Programming Practice Guidelines
- 黑马程序员--学习C语言结构体
- C++ STL栈和队列的使用
- C++ STL栈和队列的使用
- C++中的顺序容器
- C++ 中dynamic_cast<>的使用方法
- 【C语言】一些面试题。
- 详细说明C++笔试题,调查超载、盖、多态
- [LeetCode] Minimum Path Sum
- 【C语言】复杂类型声明
- 关于static在java和c++中的用法小谈(二)
- C语言32个关键字
- UVa10391 复合词
- C语言标识符
- C语言的内存分配
- [C++对象模型][8]多重继承与虚函数表
- 给source insight添加.cc的C++文件后缀识别
- 关于static在java和C++中的用法小谈(一)
- 关于构造函数