大局的类对象初始化可不可以在main()中
全局的类对象初始化可不可以在main()中?
全局类对象是在程序进入main()之前的startup()函数中初始化
我之前认为的原因是,类在定义对象的时候,编译器会自动加上调用该类构造函数的语句,因为这个对象定义在全局范围内,没办法在全局范围内加 调用构造函数的语句,所以要将调用构造函数的语句放在其他地方,这就是为什么全局变量要在进入main()之前初始化好的原因。
但是后来想了下,发现好像有点不妥,如果编译器把调用这个构造函数的语句加在 main()函数最开头的位置,可不可以呢?
------解决方案--------------------
可以
------解决方案--------------------
你定义全局对象的时候它就构造了。
------解决方案--------------------
这个你可以写一个简单的例子程序啊:
#include <iostream>
using namespace std;
class AA
{
public:
AA()
{
cout<<"This is AA"<<endl;
}
};
AA a;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"This is main"<<endl;
return 0;
}
输出结果:
This is AA
This is main
------解决方案--------------------
可以
------解决方案--------------------
没有什么具体的意义,对象在构造的时候就会调用构造函数,不是都在main里面构造的!
------解决方案--------------------
不可以,
------解决方案--------------------
LZ,我最近正好在学这方面的内容,你说的问题我也学习到了。请看这篇:http://blog.csdn.net/chain2012/archive/2010/03/15/5382956.aspx
------解决方案--------------------
------解决方案--------------------
全局类对象是在程序进入main()之前的startup()函数中初始化
我之前认为的原因是,类在定义对象的时候,编译器会自动加上调用该类构造函数的语句,因为这个对象定义在全局范围内,没办法在全局范围内加 调用构造函数的语句,所以要将调用构造函数的语句放在其他地方,这就是为什么全局变量要在进入main()之前初始化好的原因。
但是后来想了下,发现好像有点不妥,如果编译器把调用这个构造函数的语句加在 main()函数最开头的位置,可不可以呢?
------解决方案--------------------
可以
------解决方案--------------------
你定义全局对象的时候它就构造了。
------解决方案--------------------
这个你可以写一个简单的例子程序啊:
#include <iostream>
using namespace std;
class AA
{
public:
AA()
{
cout<<"This is AA"<<endl;
}
};
AA a;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"This is main"<<endl;
return 0;
}
输出结果:
This is AA
This is main
------解决方案--------------------
可以
------解决方案--------------------
没有什么具体的意义,对象在构造的时候就会调用构造函数,不是都在main里面构造的!
------解决方案--------------------
不可以,
------解决方案--------------------
LZ,我最近正好在学这方面的内容,你说的问题我也学习到了。请看这篇:http://blog.csdn.net/chain2012/archive/2010/03/15/5382956.aspx
------解决方案--------------------
------解决方案--------------------