我是C++的新手,正在学习C++中的嵌套类和静态类成员,我编写了下面的代码:
#include <iostream>
using namespace std;
class Outter
{
public:
Outter() {
//get();
cout << "construct Outter" << endl;
}
~Outter() {
cout << "destruct Outter" << endl;
}
private:
class Inner
{
public:
Inner() {
cout << "construct Inner" << endl;
}
~Inner() {
cout << "destruct Inner" << endl;
}
};
//Inner get() {
// return i;
//}
static Inner i;
};
int main() {
Outter o;
return 0;
}
我在外部类中创建了一个内部类,和内部类的一个静态实例。当我不使用
get()
函数运行这段代码时,结果输出如下:construct Outter
destruct Outter
然后我取消 get()
函数的注释,并在 Outter()
中调用它,重新运行程序,输出结果变为:
destruct Inner
construct Outter
destruct Outter
我对这个结果感到困惑,因为在我的理解中,在 destruct Outter
之前应该有一个 construct Inner
,并且 destruct Inner
应该在 destruct Outter
之后。有人可以解释一下这里发生了什么吗?