gpt4 book ai didi

c++ - C c;之间有什么区别吗?和 C c = C();?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:01 41 4
gpt4 key购买 nike

#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();?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35861561/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com