![]() |
1
27
如果所有成员
注意,通常情况下是相反的:
我们通过价值
根据要求,编辑有关按值呼叫的内容:
C++学生通常被告知通过引用传递类实例,因为复制构造函数是通过值传递的调用。在我们的情况下,我们必须复制
因此,
现在,我们有一个额外的奖金与这个电话按价值。如果要传递给的对象
因此,如果
所以在这种情况下传递值是 更多 比通过引用有效。 |
![]() |
2
11
对于异常安全复制构造函数,更建议实现operator=参见示例4。在这篇文章中,赫伯萨特解释了这项技术,以及为什么这是一个好主意。 |
![]() |
3
5
此实现意味着所有数据成员(和基类)的默认构造函数都是可用的,并且可以从MyClass访问,因为在进行分配之前,将首先调用它们。即使在这种情况下,对构造函数进行这种额外的调用也可能很昂贵(取决于类的内容)。 我仍然坚持通过初始化列表分离复制构造函数的实现,即使这意味着要编写更多的代码。 另一件事:这个实现可能有副作用(例如,如果您动态分配了成员)。 |
![]() |
4
1
虽然最终结果相同,但成员首先是默认初始化的,之后才复制。 对于“昂贵”成员,您最好使用初始值设定项列表复制构造。
|
![]() |
5
0
我会说如果
|
![]() |
6
0
对。 就个人而言,如果你的类没有指针,尽管我不会重载equal运算符或编写copy构造函数,让编译器为你做这些;它将实现一个浅显的副本,你将确定所有成员数据都被复制,而如果你重载了=op;然后添加一个数据成员,然后忘记更新重载yo你会有麻烦的。 |
![]() |
7
0
@Alexandre-我不确定是否在赋值运算符中传递值。在那里调用复制构造函数有什么好处?这会固定分配操作员吗? 另外,我不知道怎么写评论。或者可能是我不允许写评论。 |
![]() |
8
0
它 是 技术上可以,如果你有一个工作分配操作符(复制操作符)。 但是,您应该更喜欢复制和交换,因为:
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 7 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 7 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 7 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 7 月前 |