![]() |
1
5
It has been recommended that the deleted function be
但是如果复制构造函数是
在这两种情况下,
还有我的
使用
|
![]() |
2
2
不,没关系。被删除的构造函数只有在通过重载解析选取后才会导致编译失败。这意味着,如果您删除了私有构造函数,然后尝试在类之外使用这些构造函数,那么在得到删除的构造函数错误之前,您将得到一个访问错误。 无论哪种方式,无论删除的构造函数是什么范围,对它的任何调用都将以编译错误结束。 |
![]() |
3
1
这并不重要,原因有二:
第一
其次,如果T具有无法复制的直接基类或虚拟基类(具有已删除、不可访问或不明确的复制构造函数),则将隐式声明或默认的T类复制构造函数定义为已删除;
所以a
|
![]() |
4
1
至于如何使用这个类,这没有什么区别。 但它可以改变编译器诊断消息。使用g++5.4.0版,我在尝试使用私有和已删除的成员时,遇到了关于访问私有成员的编译器错误和关于使用已删除函数的错误。另一方面,两个不同的clang++版本似乎足够聪明,只显示有关删除函数的消息,而忽略不太相关的私有访问细节。
所以我更愿意宣布这些成员为公众。函数被删除的事实实际上是您希望在无效使用时显示的,如果编译器也抱怨私有访问,那只是额外的噪音。而且,也许更重要的是,类不可复制和/或不可分配副本这一事实是类的一个关键属性,可能与阅读
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |