C C 語言複習二

2021-07-09 22:29:57 字數 2457 閱讀 9863

引用初始化時,將引用和初始值繫結在一起,而不是將初始值拷貝給引用,一旦初始化完成,引用始終和初始值繫結在一起,無法重新繫結,因此,引用必須初始化。

引用即別名,引用並非物件,對其進行的所有操作都是在與之繫結的物件上進行的;

引用本身不是物件,因此不能定義指向引用的指標,但指標是物件,所以存在對指標的引用。

引用做函式形參可以避免拷貝,如果函式無需改變引用形參的值,最好將其宣告為常量引用。不要返回區域性物件的引用和指標。

public:成員在整個程式內可被訪問,定義類的介面;

private:成員可被類的成員函式訪問,不能被使用該類的**訪問;

protected:成員與派生類分享,不被其他共有訪問。

友元:類可以允許其他類或其他函式訪問它的非公有成員,方法是令其他類或函式成為它的友元。

類的靜態成員必須在類外初始化。

拷貝構造函式呼叫情況:1,將乙個物件作為實參傳遞給乙個非引用型別的形參;2,從乙個返回型別為非引用型別的函式返回乙個物件;3,用花括號列表初始化乙個陣列中的元素;4,用=定義變數時;

需要析構函式的類也需要拷貝和賦值操作,(拷貝建構函式和賦值運算子過載);

1、子類擁有父類的所有成員變數和成員函式

2、子類就是一種特殊的父類

3、子類物件可以當作父類物件使用(賦值相容性原則)

4、子類可以擁有父類沒有的方法和屬性

子類的構造函式呼叫順序:先構造父類,再構造成員變數、最後構造自己;先析構自己,在析構成員變數、最後析構父類。

訪問控制:public繼承(public,protected,private);protected繼承(protected,protected, private);private繼承(private,private,private)。

友元關係不能被繼承;某個類的友元類的基類或派生類不具有像友元類的特殊訪問能力;

靜態成員不能被繼承;

成員函式若為虛函式,則執行動態繫結;否則,其解析過程發生在編譯時而非執行時。

多型成立的三個條件

1 要有繼承

2 要有函式重寫(虛)

3、父類指標(父類引用)指向子類物件

如果想通過父類指標 執行 所有的子類物件的析構函式,那麼需要在父類析構函式前加上

virtual

關鍵字;

多型是每個類用了乙個虛表,每個類的物件用了乙個虛指標。指向派生類的虛函式表。

函式重寫:必須發生於父類與子類之間;並且父類與子類中的函式必須有完全相同的原型;使用virtual宣告之後能夠產生多型(如果不使用virtual,那叫重定義)

多型是在執行期間根據具體物件的型別決定函式呼叫。

― 編譯器並不是把函式模板處理成能夠處理任意型別的函式

― 編譯器從函式模板通過具體型別產生不同的函式

― 編譯器會對函式模板進行兩次編譯

―在宣告的地方對模板**本身進行編譯

―在呼叫的地方對引數替換後的**進行編譯

為支援快速隨機訪問,vector將元素連續儲存;

當不得不獲取新的記憶體空間時,vector和string的實現通常會分配比新的空間需求更大的記憶體空間;

將已有元素從舊位置移動到新空間,然後新增新元素,釋放就儲存空間;

size指容器當前擁有的元素個數;

而capacity則指容器在必須分配新儲存空間之前可以儲存的元素總數,

也可以說是預分配儲存空間的大小。

resize和reserve的區別:

1,resize分配的空間都已初始化,可以訪問;reserve分配的空間沒有初始化;

2,resize調整容器的長度大小,使其能容納n個元素。

如果n小於容器的當前的size,則刪除多出來的元素。

否則,新增採用值初始化的元素。

呼叫reserve(n)後,若容器的capacity如果capacity>=n呢?capacity無變化。

(加到非成員函式或靜態成員後面會產生編譯錯誤),表示成員函式隱含傳入的this指標為 const指標,決定了在該成員函式中,任意修改它所在的類的成員的操作都是不允許的(因為隱含了對this指標的const引用);唯一的例外是對於 mutable修飾的成員。加了const的成員函式可以被非const物件和const物件呼叫,但不加const的成員函式只能被非const物件調 用。

10,常量和引用,必須通過引數列表進行初始化。

靜態函式中不能出現this指標靜態函式屬於類本身,不與類繫結,因此不能用this指標。
;靜態成員變數必須在類外初始化,靜態成員常量在類中初始化。
在類定義時,無法使用建構函式,因而無法完成物件的初始化;一般成員變數需要在類內進行初始化

11,函式模板的本質

編譯器的兩次編譯:第一次,先將模板編譯一遍,第二次,根據程式呼叫的不同版本分別為其生成對應的函式版本。

12,模板類中若使用友元函式,要將函式體直接寫在函式宣告下。分開寫有錯誤。

C語言複習 二

引言 不會將每乙個部分都詳述,只關注於一些自己認為重要的或常錯的,若有不足,還望指出 switch 細節 括號內必須是整型或列舉型別 遇到break才會跳出 case包含的必須是常量 continue 停止本次迴圈,重新開始下次迭代 函式的三要素 返回值型別,函式名稱,形式引數列表 在呼叫函式時,需...

複習筆記2 回顧C C 語言

void mergelist linklist h1,linklist h2 輸入兩個公升序鍊錶的頭結點h1和h2,公升序合併為乙個鍊錶存入到頭結點 h1中 下面有兩種方法 方法一是本人一開始想的,方法二是參 考試的時候方法二思路容易理清一點 方法一 include using namespace ...

c c 複習筆記 001

多型基於類的虛函式,子類重新定義父類的虛方法,相同的函式名有不同的函式體,程式執行中動態繫結呼叫位址 過載基於同名的函式,編譯器依據同名函式的引數不同來區別函式,程式編譯期靜態繫結呼叫位址 s 佔2個位元組,系統自動新增 0 s 佔乙個位元組 define a 3.12 與其他預編譯指令一樣不加分號...