【发布时间】:2020-03-20 17:49:58
【问题描述】:
这是在另一个类中使用静态类对象以及范围解析运算符现在我不确定静态对象或范围解析运算符是否是也调用来自不同类的构造函数的原因。 代码是:
class A
{
public:
A()
{
cout<<"A's constructor"<<endl;
}
};
class B
{
static A a;
public:
B()
{
cout<<"B's constructor";
}
static A get()
{
return a;
}
};
A B :: a;
因此与主要部分一起
int main()
{
B b;
A a1=b.get();
A a2=b.get();
A a3=b.get();
}
这是输出:
A's constructor
B's constructor
另一个查询是get函数是否真的在做任何事情?
【问题讨论】:
-
让您感到困惑的部分是什么?静态初始化发生在进入
main之前,初始化B::A(调用A的ctor),然后进入main,构造B b。其余的A对象(a1、a2 和 a3)调用复制构造函数。 -
您的代码中没有继承。这个问题还不清楚
-
您还期待什么其他输出,为什么?
标签: c++ inheritance constructor static default-constructor