首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对象析构顺序有关问题,回帖有分

2013-01-11 
对象析构顺序问题,回帖有分#include stdafx.h#include vector#include iostreamusing namespace std

对象析构顺序问题,回帖有分
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
class person
{
public:
int age;
person(){}
virtual ~person(){
cout<<"~person"<<endl;
}
 //   virtual void f() {}
};

class man : public person
{
public:
int sex;
man(){}
virtual ~man(){
cout<<"~man"<<endl;
}

};

class woman : public person
{
public:
int tall;
woman(){}
virtual ~woman(){
cout<<"~woman"<<endl;}
};

int main(int argc, char* argv[])
{
printf("Hello World!\n");
    vector<person*> vect;
man* p1 = new man;
p1->age = 10;
p1->sex = 2;

woman* p2 = new woman;
p2->tall = 100;
p2->age = 30;

    vect.push_back(p1);
vect.push_back(p2);

for (vector<person*>::const_iterator iter = vect.begin(); iter != vect.end(); iter++) {

if (man* pMale = dynamic_cast<man*>(*iter)) {

cout << pMale->sex << endl;

}
if (woman* pwomam = dynamic_cast<woman*>(*iter)) {

cout << pwomam->tall << endl;

}

}

for (int i = 0; i < vect.size(); i++)
{
delete vect[i];
}
vect.clear();

return 0;
}


执行结果:
Hello World!
2
100
~man
~person
~woman
~person
请按任意键继续. . .

先析构父再析构子,问题在哪???
[解决办法]
~man
~person



~woman
~person
[解决办法]
和构造顺序相反,跑一下程序就出来了
[解决办法]
先析构子类,再析构父类。
[解决办法]
听说有分就点进来了。



[解决办法]
没问题!(*^__^*) 嘻嘻……  求分!


[解决办法]
哪里错了?。
[解决办法]
与构造的顺序正好相反
[解决办法]


[解决办法]
先析构子类,再析构父类。
在设计析构函数的时候,各个类只用负责完成各自的析构任务就OK
在子类的析构函数后会自动调用父类的析构函数
[解决办法]
C++中的类进行创建时,构造类型的对象时,是先调用父类的构造函数,再调用子类的构造函数
构析时,是先调用子类的析构函数,再调用父类的析构函数。
[解决办法]
构造和析构是顺序相反的。构造:父-》子。析构:子-》父
[解决办法]
听说有分,我也来了。。。 对象析构顺序有关问题,回帖有分
[解决办法]
引用:
你要送快递, 于是从里往外一层包一层,
收快递的人,要由外往里一层一层解开。


说的好。。
[解决办法]
楼主说的有什么问题吗?本来就是析构和构造相反就行了。

热点排行