鱼C论坛

 找回密码
 立即注册
查看: 2731|回复: 6

构造函数和析构函数的调用顺序问题

[复制链接]
发表于 2012-7-26 08:59:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#ifndef        CONS_DES_H
#define        CONS_DES_H
//头文件
#include <iostream>

class base
{
public:
        base(int);
        ~base();
private:
        int data;

};
#endif
#include "cons_des.h"

//.cpp 文件
base::base(int value):data(value)
{
        std::cout << "Object" << data << "  constructor";
}

base::~base()
{
        std::cout << "Object" << data << "  destructor" << std::endl;
}

//main函数的主文件(,cpp)
#include "cons_des.h"

using namespace std;

void create(void);

base first(1);

int main()
{
        cout << " (globally created before main) " << endl;
        base second(2);
        cout << " (local automatis in main) " << endl;
        static base third(3);
        cout << " (local static in main) " << endl;

        create();

        base sixth(6);
        cout << " (local automatic in main) " << endl;


        return 0;
}
void create(void)
{
        base fourth(4);
        cout << " (local automatic in create) " << endl;

        static base fifth(5);
        cout << " (local static in create) " << endl;
}
//运行结果:
Object1  constructor (globally created before main)
Object2  constructor (local automatis in main)
Object3  constructor (local static in main)
Object4  constructor (local automatic in create)
Object5  constructor (local static in create)
Object4  destructor
Object6  constructor (local automatic in main)
Object6  destructor
Object2  destructor
Object5  destructor
Object3  destructor
问题:为什么最后的应该是调用first对象的析构函数啊 。为什么没有显示呢。就差这一个。求鱼油们帮忙。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 10:44:46 | 显示全部楼层
晕了 不太明白 楼主的意思是?:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 19:28:48 | 显示全部楼层
你整理在一个源程序文件里面比较清晰的  还有你发代码 请用代码格式发 这样别人比较好查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-27 09:14:23 | 显示全部楼层
很简单的,就是信息隐藏啊。我想知道的,一下就能看明白吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-27 15:33:40 | 显示全部楼层
http://topic.csdn.net/u/20070920/15/98fa235f-1880-4ffa-9119-142209428e70.html
自己查查就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-27 21:35:54 | 显示全部楼层
析构了 只是std里的cout对象应该失效了 因为全局对象不同CPP构造顺序是不确定的
所以析构顺序也不确定 所以你不能一个全局对象的析构调用另一个全局对象的功能 有可能另个全局对象已经被析构了 也不能构造时运行另个全局对象 我是说不同CPP理构造析构顺序不确定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-29 20:44:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 02:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表