我正在使用以下代码片段来比较在 C++ 中创建对象的两种方法。
#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
有人可以向我解释为什么不是这样。抱歉,如果我在这里遗漏了一些非常明显的东西。