从下面的代码中,我期望 CA 类会调用以下代码
- 构造函数创建要由函数返回的临时对象
foo
a
复制构造函数创建要传递给主变量的变量- 另一个复制构造函数,它将
a
根据函数返回的值创建变量。
为什么不是这样?我得到的结果只是
A
在我期待的时候
ABB
所以只有构造函数被调用。编译器是在幕后优化某些东西还是我错过了一些 C++ 概念?
class CA{
public:
CA(){ std::cout << "A"; }
CA( const CA& ){ std::cout << "B"; }
CA& operator=(const CA& ){ std::cout << "C";return *this; }
};
CA foo(){
return CA();
}
int main(){
CA a = foo();
}