[英]C++: construction and destruction of static inner class instance in outer class
我是 C++ 的新手並學習嵌套類和 static class 成員 ZF6F87C9FDCF18B3C3C9ZEE,I 如下:
#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;
}
我在外部 ZA2F2ED4F8EBC2CBB1C21A29DC4AB 中制作內部 class 的內部 class 和 static 實例。 當我在沒有get()
function 的情況下運行此代碼時,結果 output 是:
construct Outter
destruct Outter
然后我刪除get()
function 的注釋並在Outter()
中調用它,我重新運行程序, output 變為:
destruct Inner
construct Outter
destruct Outter
我對這個結果感到困惑,因為據我了解,在destruct Inner
destruct Inner
之前應該有一個construct Inner
,而在destruct Outter
之后應該有 destruct Inner 。 有人可以解釋這里發生了什么嗎?
output 不是您所期望的,因為Inner i;
調用get
時已經構建。
發生的情況如下: 1. 在get
中,您得到一個 static 實例到i
,這是一個復制操作,這里沒有默認構造。 3. 您返回一個臨時復制的Inner
object,它立即被破壞,因此destruct Inner
。
我想, Outer
是不言而喻的。 你構造它,當它超出 scope 時,它就會被破壞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.