c – C c之间是否有任何区别;和C c = C();?

#include<iostream>
using namespace std;

class C{
private:
    int value;
public:
    C(){
        value = 0;
        cout<<"default constructor"<<endl;
    }
    C(const C& c){
        value = c.value;
        cout<<"copy constructor"<<endl;
    }
};
int main(){
    C c1;
    C c2 = C();
}

输出:

默认构造函数

默认构造函数

题:

对于C c1;对于C c2 = C(),显然会调用默认构造函数;我以为默认构造函数会被调用来初始化一个临时对象,然后复制构造函数会调用初始化c2,看来我错了.为什么?

最佳答案
这是复制省略的一个例子 – 基本上允许编译器优化掉复制.这里描述:
http://en.cppreference.com/w/cpp/language/copy_elision

转载注明原文:c – C c之间是否有任何区别;和C c = C();? - 代码日志