C++中对象的构造顺序

本文探讨了C++中对象的构造顺序,包括全局区、栈区和堆空间中对象构造的规则。全局区构造顺序不确定,局部对象依赖程序执行流,堆对象依赖new关键字的使用顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在前边几课,我们知道了类的构造函数,在生成类对象时会被自动调用,但是假如我们定义多个对象,那么这些定义的对象,他们的构造函数执行的顺序是怎样的?换句话说就是类对象的构造顺序是怎样的?

    我们来直接揭晓答案吧,这里我共分为3中情况
    -全局区定义的对象的构造顺序是不确定的,不同的编译器使用不同的构造规则
    -局部对象:当程序执行流到达对象构造语句时进行构造
    -对象:当程序执行流执行到new关键字时创建对象,new创建对象时会自动调用构造函数

#include <iostream>
#include <string>

using namespace std;

class test
{
private:
    string m_str;
	
public:

    test(string str): m_str(str)
    {
    	cout << m_str << endl;
    }
};

test t1("t1");	//全局区定义对象
test t2("t2");
test t3("t3");

int main()
{
    //局部区栈空间定义对象
    test t4("t4");
    if (true)
    {
    	test t5("t5");
    }
    else
    {
    	test t6("t6");
    }

    //堆空间定义对象
    test *pt7 = NULL;
    test *pt8 = NULL;

    pt8 = new test("pt8");
    pt7 = new test("pt7");

    system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值