构造函数的执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数的执行顺序相关的知识,希望对你有一定的参考价值。

先是代码:

#include<iostream>
#include<string>
using namespace std;
class Demo
{
    public:
        Demo(string s);
        ~Demo();
    private:
        string m_s;
};
Demo::Demo(string s):m_s(s){}
Demo::~Demo(){cout<<m_s<<endl;}
void func()
{
    Demo boj1("1");
}
Demo obj2("2");
int main()
{
    //局部对象
    Demo obj3("3");
    Demo *pobj4=new Demo("4");
    func();
    cout<<"main"<<endl;
    return 0;
}

 

然后运行结果是

1
main
3
2

 这里分析下堆栈和构造函数初始化中的函数调用顺序:

 

以上是关于构造函数的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

静态代码块构造代码块构造函数以及Java类初始化顺序

静态代码块非静态代码块构造函数之间的执行顺序

父类,子类,静态属性,静态代码块,构造代码块,构造函数,执行顺序

java中静态代码块构造代码块构造方法main函数的执行顺序?

Java静态代码块代码块及构造函数执行顺序

C#的构造函数在基类和父类中执行顺序