![]() |
1
7
限制你的用户并不总是一个好主意。仅仅记录复制可能很昂贵就足够了。如果用户真的想要复制,那么通过提供复制构造函数来使用C++的本机语法是一个更为清洁的方法。
|
![]() |
2
4
IMHO,提供复制构造函数和赋值运算符与否更多地取决于类的模型化程度,而不是复制的成本。 如果你的班级代表 价值观 如果你的类不是,那就是如果你认为这个类的对象有一个身份和一个状态(你也可以这么说) 实体 ),不要。如果副本有意义,请为其提供克隆或副本成员。
|
![]() |
3
4
一般来说,不会因为类太重而使它们不可复制(您已经展示了一个很好的STL示例)。 当它们连接到一些不可复制的资源(如socket、file、lock)或它们不可复制时,您会使它们不可复制 设计
关于
|
![]() |
4
4
注意STL的vector、string、map、list等都可以被视为“重量级”对象(特别是像一个包含10000个元素的vector之类的东西!)。这些类仍然提供复制构造函数和赋值运算符,因此如果您知道自己在做什么(例如制作一个std::向量列表),那么您可以在必要时复制它们。 因此,如果有用,无论如何都要提供它们,但一定要记录它们是昂贵的操作。 |
![]() |
5
2
如果您想确保拷贝不会发生错误,并且制作拷贝会导致严重的瓶颈或者根本没有意义,那么这是一个好的实践。编译错误比性能调查更好。
|
![]() |
quantum_well · 使类不可复制的宏 10 年前 |