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...