c++构造顺序
2024-10-07 08:22:56
1. 静态成员最先构造,按照静态成员初始化顺序,不是类里面的声明顺序
2. 父类构造
3. 非静态成员构造,按照类成员声明顺序,不是逗号初始化成员顺序
4. 自身构造函数
Demo:
class TestA
{
public:
TestA(){
std::cout << "TestA()" << std::endl;
}
}; class TestB
{
public:
TestB(int b) {
std::cout << "TestB()" << std::endl;
}
}; class TestC
{
public:
TestC(int c) {
std::cout << "TestC()" << std::endl;
}
}; class TestD
{
public:
TestD() {
std::cout << "TestD()" << std::endl;
}
}; class TestE
{
public:
TestE() {
std::cout << "TestE()" << std::endl;
}
}; class Father
{
public:
Father() {
std::cout << "Father()" << std::endl;
}
~Father() {
std::cout << "~Father()" << std::endl;
}
}; class SonA : public Father
{
public:
SonA(int num1, int num2)
:m_C(num1)
,m_B(num2)
{
std::cout << "SonA()" << std::endl; //先Father,最后Son
}
~SonA() {
std::cout << "~SonA()" << std::endl;
}
public:
static TestD m_gD;
static TestE m_gE; private:
TestA m_A;
TestB m_B;
TestC m_C; //member声明顺序 A,B,C,逗号初始化顺序忽略
}; TestE SonA::m_gE;
TestD SonA::m_gD; //static初始化顺序 E,D int main()
{
SonA son(1, 2);
}
输出:
TestE()
TestD()
Father()
TestA()
TestB()
TestC()
SonA()
最新文章
- Find and delete duplicate files
- 用php脚本给html中引用的js和css路径打上版本
- linux centos中使用yum安装tomcat
- Spring学习笔记—最小化Spring XML配置
- 搭建本地MAVEN NEXUS 服务
- Redis教程(七):Key操作命令详解
- iOS开发的设计模式
- 修改weblogic11g的JDK版本
- ArcMap - 分割.
- ckeditor3.4.2是否升级为4.2.1的问题
- 一个JS效果竟然要研究一天,我是不是不适合做前端?
- 软件工程团队:Spring计划会议及详细计划表
- Jquery回到顶部效果
- [Linux]《鸟哥的私房菜》笔记 (缓慢更新)
- python使用selenium
- Jquery_artDialog对话框弹出
- Java实现基于桶式排序思想和计数排序思想实现的基数排序
- iOS边练边学--tableView的批量操作
- python3 datetime和time获取当前日期和时间
- CF311B Cats Transport
热门文章
- Error: pgraster_wkb_reader: grayscale band type 10 unsupported
- C#调用Python(一)
- JPA学习(四、JPA_映射关联关系)
- luogu P1434 滑雪 x
- 搜狗微信采集 —— python爬虫系列一
- 论文阅读:Elastic Scaling of Stateful Network Functions
- pythonCSV模块
- shell基础操作
- c++内置变量类型
- [LeetCode]-DataBase-Combine Two Tables