游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8267|回复: 35

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

[复制链接]

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2004-10-27 14:23:00 | 显示全部楼层 |阅读模式
下列程序:

#include<iostream>
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!
很奇怪吧?a1和b1怎么没有被析构?而且执行顺序是main前-->main后-->main,另外在main外只能声明对象,不能执行其它任何语句.
结论:main外的部分只能用来声明全局对象,并且main外的先一起做完在从main开始.
问题是全局对象在哪被析构??? [em8]

0

主题

108

帖子

153

积分

注册会员

Rank: 2

积分
153
QQ
发表于 2004-10-27 14:58:00 | 显示全部楼层

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

A Created
B Created
in main
A Created
A Destroyed
b Destroyed
A Destroyed
这是我机器上的结果.

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

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

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

我用的VC6.

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

我没电脑,所以无法检验

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

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

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

什么叫不起作用?cout对象不也是全局的吗.
析构就应该要调用函数~X呀.

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

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

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

我的一样。如果你直接运行,那几行一闪就没了。你先把控制台打开,把exe拖进去,回车,就看到了。

0

主题

108

帖子

153

积分

注册会员

Rank: 2

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

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

两个全局的最先构造, -->然后是执行main()里的,显示"in main", -->然后是main()里的A构造-->main()里的A析构-->两个全局的析构(顺序和构造相反)

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

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

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

或者在析构函数里写文件。或者调试一下,选运行到那里。

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

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

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

怎么回事?
我的输出是这样的:
A Created!
B Created!
In Main!
A Created!
A Destroyed!
Press any key to continue...

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

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

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

VC6就是这样,main结束后自动加个Press any key to continue...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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