欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 13 拷贝控制)三五法则

发布时间:2025/3/21 c/c++ 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 拷贝控制)三五法则的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。