私はこの単純なコードを書いて、私は別の結果を期待していました。静的割り当てのコンストラクタとデストラクタの順序
struct Test {
int value_;
Test(): value_(0) {
std::cout << "Constructor: "<< value_ << "\n";
}
Test(int value): value_(value) {
std::cout << "Constructor: "<< value_ << "\n";
}
~Test() {
std::cout << "Destructor: "<< value_ << "\n";
}
};
int main(int argc, char **argv) {
Test t;
t = Test(10);
t = Test(15);
t = Test(20);
t = Test(25);
}
そして結果:
Constructor: 0
Constructor: 10
Destructor: 10
Constructor: 15
Destructor: 15
Constructor: 20
Destructor: 20
Constructor: 25
Destructor: 25
Destructor: 25
それは最後の行が繰り返される期待していなかったので、私は驚きました。なぜDestructor: 0
が呼び出されなかったのですか?
コンストラクタとデストラクタを印刷するときは、コピー/移動コンストラクタとコピー/移動代入演算子を飾る必要があります。 – NathanOliver