C++ Primer 5th笔记(chap 13 拷贝控制)三五法则
生活随笔
收集整理的这篇文章主要介绍了
C++ Primer 5th笔记(chap 13 拷贝控制)三五法则
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1. 三个基本操作可以控制类的拷贝操作
• 拷贝构造函数
• 拷贝赋值运算符
• 析构函数。
新标准还有2个函数:
• 移动构造函数(move constructor)
• 移动赋值运算符(move-assignment operator)
2. 二个法则
原则1:
通常这前3个函数作为一个整体出现。当决定一个类是否要自定义拷贝控制成员时,一个基本原则就是首先确定这个类是否需要一个析构函数,如果一个类需要析构函数,几乎可以肯定它也需要一个拷贝构造函数和一个拷贝赋值运算符。
class HasPtr{ public:HasPtr(const std::string &s = std::string()):ps,(new std::string(s),i(0)){}~HasPtr(){delete ps;} }如何使用编译器会合成默认的拷贝构造函数和拷贝赋值运算符,这些函数将简单的拷贝指针成员,这意味着多个 HasPtr 对象可能指向相同的内存(会带来问题的哦)
HasPtr f(HasPtr hp) //HasPtr是一个传值参数,所以被拷贝 {HasPtr ret = hp; //拷贝给指定的HasPtrreturn ret; //ret 和 hp 被销毁 }原则2
需要拷贝操作的类也需要赋值操作,反之亦然,需要拷贝构造函数或者拷贝赋值函数不一定需要析构。
总结
以上是生活随笔为你收集整理的C++ Primer 5th笔记(chap 13 拷贝控制)三五法则的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha