谁能向我解释为什么以下程序会产生输出“cpy:0”(至少在使用 g++ 4.5.2 编译时):
#include<iostream>
struct A {
bool cpy;
A() : cpy (false) {
}
A (const A & a) : cpy (true) {
}
A (A && a) : cpy (true) {
};
};
A returnA () { return A (); }
int main() {
A a ( returnA () );
std::cerr << "cpy: " << a.cpy << "\n";
}
当我试图弄清楚这个例子看似奇怪的结果时,问题就出现了:用常量数据成员或引用成员移动类的ctor