日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

c/c++

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

發布時間:2025/3/21 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 拷贝控制)三五法则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。