首先看一个例子:
class A
{
public: //为了直接访问
int i;
};
A a;
int main(void)
{
cout << a.i << endl;
return 0;
}
这里的输出结果是0,因为a是一个全局变量,编译器在编译的时候会获得编译单元内的全局变量,然后生成两个函数:
_sti() 和_std(),执行对象的构造和析构。
本例中,没有定义类A的构造函数,但是编译器也不会为我们合成一个default constructor,原因见《深入探索C++对象模型》第二章,
class A
{
public:
A() = default;
int i;
};
A a;
int main(void)
{
cout << a.i << endl;
return 0;
}
一样的结果。
class A
{
public:
A(int j) { i = j; }
int i;
};
A a;
int main(void)
{
cout << a.i <&