我想弄清楚何时使用移动语义以及何时使用复制构造函数和赋值操作符作为经验法则。你使用的指针类型(如果有的话)似乎受到这个答案的影响,所以我已经包含了这个。C++移动语义与复制构造器和分配操作员关于智能指针
没有指针 - 基于this答案,如果你有原始类型,如int和字符串POD类,你不需要编写自定义移动或复制建设者和运营商。
独特-PTR - 基于this答案,使用移动语义的时候,那么的unique_ptr是在shared_ptr的一个更适合的只能有一个的unique_ptr的资源。
shared_ptr - 同样,如果使用复制语义,shared_ptr似乎是要走的路。可以有多个对象的副本,所以拥有一个指向资源的共享指针对我来说是有意义的。但是,unique_ptr通常优先于shared_ptr,因此如果可以,请避免使用此选项。
但是:
- 什么时候应该使用移动语义?
- 什么时候应该使用复制语义?
- 我是否应该同时使用两者?
- 我是否应该使用none并依赖默认的拷贝构造函数和赋值运算符?
简洁,回答所有要点。有一个upvote。 –