所以我只是陷入了一些C++的討厭。具體而言,通過引用傳遞匿名變量以用於C++中類的初始化程序列表。考慮下面的代碼;匿名變量,通過引用傳遞,初始值設定項列表
class A {
public:
int x;
A(int x=0) : x(x) {
std::cout <<"A: creatred\n";
}
~A() {
std::cout << "A: destroyed\n";
}
};
class B {
public:
A a;
B(const A& in) : a(in) {
std::cout <<"B: creatred\n";
}
~B() {
std::cout << "B: destroyed\n";
}
};
int main() {
B b(A(0));
std::cout << "END\n";
return 0;
}
輸出:
A: creatred
B: creatred
A: destroyed
END
B: destroyed
A: destroyed
我數2個創作和3個破壞力。這是怎麼回事?方式我看到它,我創建b
時使用匿名變量A(0)
作爲輸入。不確定事物的順序是什麼。創建一個對匿名變量的引用並用於複製(複製構造函數將在初始化程序列表中調用,是嗎?)成員變量a
。匿名變量何時銷燬?一般來說,爲什麼我會看到2個構造函數和3個析構函數。謝謝。
他們親切地稱爲臨時變量++年底被破壞。 –
而不是匿名變量? – gone