在下面的代码中,它打印出两个不同的内存位置。这对我来说很有意义,因为我是按价值返回的。
#include <iostream>
using namespace std;
class Foo {
public:
Foo () {}
// Foo (const Foo &) { cout << "Copy con" << endl; }
};
Foo test () {
Foo foo;
cout << &foo << endl;
return foo;
}
int main () {
Foo foo = test();
cout << &foo << endl;
}
但是,如果我在上面的代码中取消注释复制构造函数并再次运行它,它会输出相同的内存位置两次。为什么?它根本不会打印出“Copy con”,所以我知道复制构造函数没有被调用。似乎复制构造函数的存在会导致某种优化,即使它没有被调用。
我在 GCC 4.6.3 上使用“g++ -Wall test.cpp -o test”进行编译。