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