c++ 构造函数调用顺序解析,该怎么解决
c++ 构造函数调用顺序解析
各位谁能帮忙详细解析一下以下程序
#include "stdafx.h"
#include
using namespace std;
class A
{
public:
A(){cout<<"A ";}
~A(){cout<<"~A ";}
};
class B
{
public:
B(int j){cout<<"B ";}
~B(){cout<<"~B ";}
};
class C
{
public:
C(){cout<<"C ";}
virtual ~C(){cout<<"~C ";}
};
class D : public C
{
public:
D(int j)
{
cout<<"D ";
pb = new B(j);
}
~D()
{
delete pb;
cout<<"~D ";
}
private:
B *pb;
A a;
};
int _tmain(int argc, _TCHAR* argv[])
{
C* pc = new D(1);
delete pc;
return 0;
}
上面程序执行结果为:( )
A. C A D B ~B ~D ~A ~C
B. C A D B ~C
C. C D B A ~A ~B ~D ~C
D. C D B A ~C
------解决方案--------------------
各位谁能帮忙详细解析一下以下程序
#include "stdafx.h"
#include
using namespace std;
class A
{
public:
A(){cout<<"A ";}
~A(){cout<<"~A ";}
};
class B
{
public:
B(int j){cout<<"B ";}
~B(){cout<<"~B ";}
};
class C
{
public:
C(){cout<<"C ";}
virtual ~C(){cout<<"~C ";}
};
class D : public C
{
public:
D(int j)
{
cout<<"D ";
pb = new B(j);
}
~D()
{
delete pb;
cout<<"~D ";
}
private:
B *pb;
A a;
};
int _tmain(int argc, _TCHAR* argv[])
{
C* pc = new D(1);
delete pc;
return 0;
}
上面程序执行结果为:( )
A. C A D B ~B ~D ~A ~C
B. C A D B ~C
C. C D B A ~A ~B ~D ~C
D. C D B A ~C
------解决方案--------------------