次のコード スニペットを使用して、C++ でオブジェクトを作成する 2 つの方法を比較しています。
#include <iostream>
using std::cout;
using std::endl;
class Foo {
public:
Foo() : x(0) { cout << "In Foo constructor." << endl; }
~Foo() { cout << "In Foo destructor." << endl; }
Foo(const Foo&) { cout << "In Foo copy constructor." << endl; }
// Assignment operator.
Foo& operator=(const Foo&) {
cout << "In assignment operator." << endl;
return *this;
}
private:
int x;
};
int main() {
cout << "Constructing Foo 1" << endl;
Foo Foo_1;
cout << "Constructing Foo 2" << endl;
Foo Foo_2 = Foo();
return 0;
}
このコード スニペットの出力は次のとおりです。
Constructing Foo 1
In Foo constructor.
Constructing Foo 2
In Foo constructor.
In Foo destructor.
In Foo destructor.
Visual C++ 2010 (コンパイラ バージョン 16.x) を使用しており、cl /EHsc /W4 test.cpp
. . Foo_2
_ Foo_2
_ なぜそうではないのか、誰かが私に説明できますか。ここで非常に明白な何かが欠けている場合はお詫び申し上げます。