#include <iostream>
using namespace std;
class A
{
int x;
public:
A() { cout << "A's constructor called " << endl; }
};
class B
{
static A a;
public:
B() { cout << "B's constructor called " << endl; }
static A getA() { return a; }
};
A B::a; // definition of a
int main()
{
B b1, b2, b3;
A a = b1.getA();
return 0;
}
输出:
一个名为
的构造函数
B的构造函数叫做
B的构造函数叫做
B的构造函数叫
我无法理解我们如何获得上述输出以及第2类中第1类声明的对象。
答案 0 :(得分:2)
我无法理解我们如何获得上述输出以及第2类中第1类声明的对象。
static A a;
是class B
的静态成员,将为B
的所有实例实例化一次。
甚至在输入main()
之前就会发生这种情况,你很幸运
cout << "A's constructor called " << endl;
效果很好,因为static
个实例不能保证按特定顺序初始化(请注意std::cout
只是另一个static
对象实例)。