Geekband c 第二週(侯捷主講)

2021-07-26 04:33:33 字數 843 閱讀 6118

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