gpt4 book ai didi

c++ - 为什么我的复制构造函数不起作用? (C++)

转载 作者:行者123 更新时间:2023-12-01 14:34:41 25 4
gpt4 key购买 nike

我正在学习 C++,并创建了这个简单的代码来练习复制构造函数。

class Cube{
private:
double length;
public:
Cube(){
length = 1;
cout << "default constructor called" << endl;
};
Cube(const Cube& obj){
length = obj.length;
cout << "copy constructor called" << endl;
};
};

Cube foo(){
Cube c;
return c;
}

int main(){
Cube c2 = foo();
return 0;
}

我希望这会打印出来
“调用默认构造函数”
“调用复制构造函数”
“调用复制构造函数”
因为在“Cube C”中调用了默认构造函数,在“return c”和“Cube c2 = foo()”中调用了复制构造函数。

但是我的控制台只显示“调用默认构造函数”

我是否误解了复制构造函数的工作原理?

最佳答案

这不会调用您的复制构造函数,而是将 foo 中创建的对象初始化为 c2。

Cube c2 = foo();

这将调用 = 赋值运算符:

Cube c2; // default constructor
c2 = foo(); // default constructor inside foo() and then assignment operator

这将调用复制构造函数:

Cube c3; // default constructor
Cube c2(c3); // copy constructor

复制构造函数的语法如下:

Cube(const Cube& obj)

它是一个构造函数,从另一个对象创建一个对象的拷贝。

关于c++ - 为什么我的复制构造函数不起作用? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62146129/

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