C 知識點總結

2021-10-30 16:13:38 字數 3181 閱讀 9510

2 類是乙個型別,本身不佔空間,物件佔空間。

2. 建構函式的作用:

分配空間並且初始化。物件要分配空間,必須呼叫建構函式,如果無建構函式,系統預設提供乙個無參的建構函式,其之分配空間,並未賦初值 。 建構函式可以過載,但不能有返回值。

3. 全域性物件:

主函式之前分配空間,主函式之後釋放空間(即主函式之前可以執行**)。

4. 變數:

全域性變數和靜態變數在定義時,將位模式清0,區域性變數在定義時,分配的記憶體空間內容保持原樣,因此為隨機數

5. 析構函式是特殊的類成員函式,它沒有返回型別,沒有引數,不能隨意呼叫,

也沒有過載,只是在類物件生命期結束的時候,由系統自動呼叫

6. 預設建構函式:

① 一旦有乙個引數給定預設值,則其它也必須給定預設值

② 預設值一般寫在函式宣告時而非定義時

7. 預設建構函式:只能開闢空間,不能賦值

① c++規定,每個類必須有乙個建構函式,沒有建構函式,就不能建立任何物件

② 若未提供乙個類的建構函式,則c++提供乙個預設的建構函式,該預設建構函式是個無參建構函式,它僅負責建立物件,而不做任何初始化工作

3 只要乙個類定義了乙個建構函式(不一定是無參建構函式),c++就不再提供預設的建構函式。也就是說,如果為類定義了乙個帶引數的建構函式,還想要無參建構函式,則必須自己定義

4 與變數定義類似,在用預設建構函式建立物件時,如果建立的是全域性物件或靜態物件,則物件的位模式全為0,否則,物件值是隨機值

8. new與malloc:

① new是c++的運算子,malloc是c庫函式,使用時要加

② new在分配空間時會自動呼叫建構函式,malloc不會自動呼叫建構函式,它只管分配空間

(四)靜態成員與友元

1. 靜態變數初始化:

普通變數會隨類物件的建立而重新建立,但靜態的只會建立一次,不在建構函式執行的時候分配科技,它的定義寫在類的外面。

2.靜態資料成員:

靜態資料成員的生命期是全域性的,編譯器只對它進行一次初始化,它保持原值,知道下一次改變它為止。

靜態變數在儲存上只需拷貝乙份就可以供所有物件使用。

3.靜態資料成員使用:

5 用來儲存流動變化的物件個數(如noofstudents)

6 作為乙個標誌,指示乙個特定的動作是否發生(如:可能建立幾個物件,每個物件要對某個磁碟檔案進行些操作,但顯然在同一時間裡只允許乙個物件些檔案,在這種情況下,使用者希望說明乙個靜態資料成員指出檔案何時正在使用,何時處於空閒)

7 乙個指向乙個鍊錶第一成員或最後乙個成員的指標

封裝:資料成員和函式結合,組成乙個有機的整體,在這個整體中,有些是保護的,防止外界的修改,有些是公共的,提供給外部訪問的介面。

(五)繼承

1.繼承(inherit):保持已有類的特性而構造新類的過程成為繼承

① 子類代表父類的特定版本

② 基類的屬性和方法子類必須擁有

派生:在已有類的基礎上新增自己的特性而產生新類的過程稱為派生

2. 訪問許可權:

public繼承:

① 基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的private成員不可訪問。

② 派生類中的成員函式可以直接訪問基類的public和protected成員,但不能訪問基類的private成員。

③ 通過派生類的物件只能訪問基類的public成員。

protected繼承:

① 基類是的public和 protected成員都以protected身份出現在派生類中,但基類的private成員不可訪問。

② 派生類中的成員函式可以直接訪問基類中的public和protected成員,但不能訪問基類的private成員。

③ 通過派生類的物件不能訪問基類中的任何成員。

private繼承:

① 基類的public和protected成員都以private身份出現在派生類中,但基類的private成員不可訪問。

② 派生類中的成員函式可以直接訪問基類中的public和protected成員,但不能訪問private成員

③ 通過派生類的物件不能訪問基類中的任何成員。

若此時子類被當做另乙個類的基類時,另乙個類不能訪問其所有成員及其成員函式,因為它已經將原來基類的東西修改為自己私有的。

3. 多型:

① 必須有兩個類,且兩個類必須是父子關係

② 必須有虛函式

③ 必須有基類指標(或引用)指向派生類物件

4.若類中加入virtual函式,則類的大小變為4,即增加乙個虛指標指向虛表,

該錶存放當前類的虛函式的名字,即入口位址

5.在子類繼承基類時,隱藏有乙個基類的物件在子類的資料成員中,基類的特殊函式不被繼承(建構函式,析構函式,友元函式等)。

6、只有類的成員函式才能宣告為虛函式,虛函式只適用於具有繼承關係類物件。

7、靜態成員函式不能宣告為虛,不受限於某個物件。

8、內聯不能,不能在執行時動態確定其位置的。

9、抽象類:

不能定義具體物件,(可以定義指標)用於繼承。

必須有乙個存虛函式。(不具體實現的函式)。

建構函式是私有的。

class a;};

多型:覆蓋(重寫):

父子類之間,函式名,引數,返回型別完全相同,基類有虛。

隱藏:父子類:函式名相同,引數不同。

函式名相同,引數相同,無虛。

過載:同乙個類,函式名相同,引數的型別,個數,順序。

多型:1、 過載多型。

2、 包含多型。

3、 強制多型。

4、 引數多型。

c++中的四種強制轉換型別運算子

(1)static_cast(a)

用於明確定義的變換,將位址a轉換成型別t,t和a必須是指標、引用、算術型別或列舉型別。不進行型別檢查來確保轉換的安全性。

(2)dynamic_cast(a)

用來執行從基類指標到派生類指標的安全轉換,它常常被稱為安全的向下轉換。檢驗所請求的轉換是否真的有效,只有在有效時,它才會執行轉換。

(3)const_cast(a)

去掉型別中的常量性, t和a必須是相同的型別。用於從乙個類中去除以下這些屬性:const, volatile, 和__unaligned。

(4)reinterpret_cast(a)

能夠用於諸如char* 到 int*,或者one_class* 到unrelated_class*等類似這樣的轉換,因此是最不安全的一種轉換機制。

總結 C知識點

資料型別 值型別 基本資料型別 在c 現的簡單型別共享一些特性。第一,它們都是.net系統型別的別名。第二,由簡單型別組成的常量表示式僅在編譯時而不是執行時受檢測。最後,簡單型別可以按字面被初始化。以下為c 簡單型別歸類 整型,布林型 字元型 整型的一種特殊情況 浮點型 小數型 列舉 乙個由一指定常...

C 知識點總結

c 的特點 1.支援抽象資料型別 2.多型性,乙個介面,多重演算法,支援早期聯編和滯後聯編 3.繼承性,保證了 復用,支援分類的概念 乙個c 程式由乙個或多個函式構成,並且在這些函式中只有乙個主函式main,它是程式執行的入口。c 程式嚴格區別字母的大小寫。c 程式中的字元 字元單位 0x00 0x...

C語言知識點總結

char字元型 用於存放字元 變數賦值,初始化 int a 3 定義的同時初始化 a 6 9 定義後在程式中進行賦值 變數的值 只有在賦值操作時才會被改變,即將其放在等號左邊時才會改變它的值,或自增自減操作 a 5,a a 像a 3並未改變a的值,只是使用了a的值而已.自增自減運算 變數 變數,變數...