游戏开发论坛

 找回密码
 立即注册
搜索
楼主: moremoretime

[C++语法]一个特殊的问题?

[复制链接]

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
 楼主| 发表于 2004-10-27 15:18:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

问题发现了,但是...非常迷惑,先看下列代码.
#include<iostream>
using namespace std;

class A
{
public:
        A(void){cout<<"A Created!"<<endl;}
        ~A(void){cout<<"A Destroyed!"<<endl;}
};

class B
{
public:
B(void){cout<<"B Created!"<<endl;}
~B(void){cout<<"B Destroyed!"<<endl;}
};

A a1;

void main(int p1,char* p2[])
{
cout<<"In Main!"<<endl;
A a2;
}
B b1;
将输出
A Created!
B Created!
In Main!
A Created!
A Destroyed!

而这个
#include"iostream.h"
//using namespace std;

class A
{
public:
        A(void){cout<<"A Created!"<<endl;}
        ~A(void){cout<<"A Destroyed!"<<endl;}
};

class B
{
public:
B(void){cout<<"B Created!"<<endl;}
~B(void){cout<<"B Destroyed!"<<endl;}
};

A a1;

void main(int p1,char* p2[])
{
cout<<"In Main!"<<endl;
A a2;
}
B b1;
确输出了:
A Created
B Created
in main
A Created
A Destroyed
B Destroyed
A Destroyed
Press any key to continue...

注意他们的差别在头两行,为什么会这样??????

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-10-27 15:23:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

不明白  编译器的事吧

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-10-27 15:28:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

是不是没有退到全局空间

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
 楼主| 发表于 2004-10-27 15:40:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

不知道,困惑.

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-10-27 15:47:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

不管一不一样,析构都调用了。
另外VS.net2003里已经把iostream.h这个文件去掉了。用iostream就得了,免得以后换编译器的时候出麻烦。

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-10-27 16:24:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

#include<iostream.h>//in vc6
class A
{
public:
......
result:
A Created
B Created
in main
A Created
A Destroyed
B Destroyed
A Destroyed

30

主题

276

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2004-10-27 23:05:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

同一个模块的全局变量是在main之前依次构造,main后依次拆构的.不同模块顺序==连接顺序,但是好象有时候编译器的技术也会影响.
局部变量的构造是在局部变量的定义时发生的,函数退出时拆构.

这个问题恐怕是vc6和stl的搭配问题,你给你的vc6打补丁到sp5试试,或许能够解决.

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-28 00:09:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

你别着急,等俺明天下班回家用汇编跟一遍看看再说!

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2004-10-28 09:04:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

cout可能先被析构了。

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2004-10-28 09:05:00 | 显示全部楼层

Re:[C++语法]一个特殊的问题?

用printf或者其他的试试。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 02:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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