gpt4 book ai didi

c++ - 复制和赋值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:26 26 4
gpt4 key购买 nike

谁能解释一下复制和赋值之间的区别?

SomeClass a;
SomeClass b = a; // assignment
SomeClass c(a); // assignment
b = c; // copying

但有什么区别,为什么语言中有两种不同的结构?

最佳答案

初始化只发生一次,当对象被创建时。如果通过复制你的意思是调用复制构造函数,那么复制就是一种初始化形式。分配可以发生任意次数。

现在,以您的示例为例,所有这些都是错误的:

SomeClass a();

这声明了一个名为 a 的方法,它不接受任何参数并返回一个对象 SomeClass

SomeClass b = a; // actually copy constructor & initialization of b
SomeClass c(a); // same

如果 a 是一个 SomeClass 对象,这两个将是初始化,它调用复制构造函数 - SomeClass::SomeClass(const SomeClass&)。它们是等价的。

b = c; // assignment

如果 c 是一个 SomeClass 对象,this 就是赋值。它调用 SomeClass::operator =(const SomeClass&)

关于c++ - 复制和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984086/

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