1 拷貝建構函式 拷貝賦值函式 析構函式
建構函式,拷貝函式,析構函式是三種特殊的函式。
之前講的類著重於類中沒有帶指標的情況,現在著重
類中有指標的情況。
類中有指標就會導致淺拷貝,所以要考慮重新定義拷貝建構函式。
拷貝建構函式:函式名與類名相同,傳入引數為自己類的object。
拷貝賦值函式和拷貝建構函式的區別:拷貝賦值函式是清空原有空間,建立新空間,將新的資訊放入新的空間裡;拷貝建構函式只需要建立新空間將新資訊放入新空間。
拷貝賦值函式:自我檢測非常重要。
2 堆、棧和記憶體管理
棧是存在於某個作用域的,堆是由作業系統提供的global記憶體空間;
棧的生命週期存在作用域結束時就結束了,是自動結束的。
靜態物件的生命週期是在作用域結束之後仍然存在。
全域性物件的生命週期在整個程式結束時結束,可以視為一種靜態物件。
堆物件的使用要注意
記憶體洩漏。是否後續使用delete
在類裡面使用堆物件:new 是分配一部分空間,然後呼叫delete。
new的操作流程是先分配乙個空間,然後呼叫建構函式。
delete是先呼叫析構函式,然後再釋放空間。
陣列的new 一定要搭配陣列的delete。
3 擴充套件補充
類中的靜態資料或者靜態函式:
將建構函式放在private區域的情況:
也就是單例,在之前有講到過單例的情況,但沒有展開介紹,
利用函式返回靜態資料,以此建立和呼叫private裡面的資料。並且建構函式不能被其它物件呼叫。
模版的補充:
編譯器會對template進行引數推導,這一點非常方便,不需要人為設定。
C 新標準 侯捷(二) 語言(中)
可以讓編譯器找出乙個表示式的型別,相當於typeof特性。mapcoll decltype coll value type elem map value type elem 1.用來宣告返回型別,比如 templatedecltype x y add t1 x,t2 y 因為這時還沒讀入x,y所以改...
C 11新特性 侯捷 課程筆記 二
本部分包括的內容為variadic templates 可變模板引數 這部分似乎是個概述,我看到後面有好幾節課也是這個主題。void print template 這裡的.是關鍵字的一部分 void print const t firstarg,const types args 這裡的.要寫在自定義...
第二週作業
實驗作業 1.編寫調式執行第乙個c 程式,要求輸出你的班級 姓名和學號 2.輸入課本例題1.2,除錯執行程式,並分析程式。3.分析程式中哪些是識別符號,哪些是關鍵字。4.回答什麼是程式 工程,原始檔 目標檔案 執行檔案 編譯預處理 名字空間 函式.主函式 功能 顯示輸出班級 姓名 學號 includ...