重新學習《C Primer5》第13章 拷貝控制

2021-07-13 04:10:46 字數 938 閱讀 9305

13.1.1拷貝建構函式

1.拷貝建構函式:自定義和合成

2.拷貝初始化

3.拷貝初始化的限制

explicit的建構函式進行型別轉換,直接初始化和拷貝初始化不一樣了

13.1.2 拷貝賦值運算子

1.賦值元演算法通常應該返回乙個指向其左側運算物件的引用

13.1.3 析構函式

1.當指向乙個物件的引用或指標離開作用域時,析構函式不會執行

13.1.4 三/五法則

1.需要析構函式的類也需要拷貝和賦值操作

一般需要定義析構的是包含指標成員,如果使用合成拷貝和賦值,只是簡單的拷貝指標成員,意味著可能會存在多個物件指向相同的記憶體。

2.需要拷貝操作的類也需要賦值,但不一定要析構

e.g:

class sales_data;

sales_data::sales_data(const sales_data &s)

class hasptr

hasptr(const hasptr&);

private:

string *ps;

int i;

};hasptr::hasptr(const hasptr &hp) :ps(new

string(*hp.ps)), i(hp.i){}

13.1.5 使用=default

1.只能對具有合成版本的函式使用

13.1.6 阻止拷貝=delete

1.=delete必須出現在函式第一次宣告的時候

2.可以對任何函式指定=delete

3.析構函式不能是刪除的成員,也不能刪除析構函式

如果析構函式是刪除的,不能定義該型別,但可以定義動態分配物件(不能釋放指標)

4.如果乙個類有資料成員不能預設構造、拷貝、複製或銷毀,則對應的成員函式被定義為刪除的

重新學習makefile

今天回顧了一下makefile,做下筆記 首先準備幾個簡單的檔案 add.c head.h main.c mul.c sub.c 然後第一版 makefile 然後第二版 gcc c main.c o main.o 然後第三版 makefile 的語法跟shell 很像 第四版 目標 依賴 tab ...

重新學習struts

這就是所謂的一邊工作一邊學習。今天準備把給公司寫個管理頁面,按照之前的路數,寫起來應該挺快,但是不太規範。也就沉下心來學習一下了。第二個學習的是,異常處理。也是在學校的時候,聽老師說過,struts2有提供乙個異常處理機制。平常我們有些異常處理,會在 中寫try catch。public strin...

mysql重新學習筆記

mysql命令複習 desc table 列式展示 alter add 增加列 delete和 truncate table的區別 1.delete dml語言 資料還可以找回來,恢復回來 逐條刪除 刪除速度要慢一些 可以有條件的刪除。delete from 表名 where 條件 2.trunca...