在main之前就出现的打印?
未进入main()函数之前就有打印?
今天学习前辈的一组代码,发现main()函数入口处第一个的打印和屏幕上的内容对应不上。屏幕上多了一些东西,不是程序的代码都是main进入的吗,那些东西是从哪里来的?
在.cpp中的代码大致如下:
#include
using namespace std;
class Myclass
{
public:
Myclass();
~Myclass();
private:
};
Myclass::Myclass()
{
cout << “hello myclass” << endl;
}
Myclass::~Myclass()
{
}
class Test
{
public:
Test();
~Test();
private:
static Myclass aa;
};
Test::Test()
{
}
Test::~Test()
{
}
Myclass Test::aa;
int main()
{
cout << “hello main” << endl;
system(“pause”);
return 0;
}
运行的结果如图:
非全面解释:
对于这个结果很是不解,遂查了一下,现在记录一下查出来的结果。如有错误的地方,还请各位大佬多多指教。
全局变量和static变量的初始化是在main函数之前进行的。
类中的static变量可以在类外进行单独的初始化。
本例中的aa是Test类中的MyClass类型的变量,并且是静态的。aa可以在类外进行单独的初始化。对aa进行初始化的时候,就必须得走MyClass的构造函数。因此”hello myclass的打印在hello main的打印之前。
好了,菜鸡收工!
参考:
https://blog.csdn.net/yockie/article/details/8980912