c 菜鳥教程

2021-08-20 19:48:43 字數 1638 閱讀 7194

菜鳥教程中的c++

1. c++類訪問修飾符:

public,private(只有類和友元函式可以訪問),protected(保護成員變數與私有成員十分相似,不同的是保護成員可以在派生類中訪問);

在類裡不寫訪問修飾符,預設是private,但是結構體的預設是public;

2.虛繼承(需要理解原理)是解決c++多重繼承問題的一種手段,從不同途徑繼承來的同一基類,會在子類中存在多份拷貝。這將存在兩個問題:其一,浪費儲存空間;第二,存在二義性問題,通常可以將派生類物件的位址賦值給基類物件,實現的具體方式是,將基類指標指向繼承類(繼承類有基類的拷貝)中的基類物件的位址,但是多重繼承可能存在乙個基類的多份拷貝,這就出現了二義性。

另外多繼承(環狀繼承),a->d, b->d, c->(a,b),例如:

classd;

classb:

publicd;

classa:

publicd;

classc:

publicb,

public

a;

這個繼承會使d建立兩個物件,要解決上面問題就要用虛擬繼承格式

格式:class 類名: virtual 繼承方式 父類名

classd;

classb:

virtual

publicd;

classa:

virtual

publicd;

classc:

publicb,

public

a;

虛繼承--(在建立物件的時候會建立乙個虛表)在建立父類物件的時候

a

:virtual

publicdb

:virtual

public

d

3. 

虛函式是在基類中使用關鍵字 

virtual宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。

我們想要的是在程式中任意點可以根據所呼叫的物件型別來選擇呼叫的函式,這種操作被稱為動態鏈結,或後期繫結

c++多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式;

形成多型必須具備三個條件:

1、必須存在繼承關係;

2、繼承關係必須有同名虛函式(其中虛函式是在基類中使用關鍵字virtual宣告的函式,在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式);

3、存在基類型別的指標或者引用,通過該指標或引用呼叫虛函式;

4. 虛函式,實際上就是比如宣告了乙個基類的指標資料,可以將讓這個指標指向擴充套件類的位址,如果當呼叫指標只指向型別的成員函式時,如果想指向到擴充套件類的成員函式上,則需要使用這個虛函式,否則指向的就是基類的成員函式。

原因在於,如果不是虛函式,則是靜態繫結的,如果是虛函式,就是動態繫結的,即虛函式位置的是乙個虛表,只有程式執行起來跑起來了,才知道具體指向的型別,才會呼叫相應的子類的成員函式。

與這個概念有關的就是析構函式一定是虛函式,防止呼叫的是基類的析構函式。 這個概念也就是多型。

C 菜鳥教程

菜鳥教程c 全域性變數和和區域性變數同名時,可通過網域名稱在函式中引用到全域性變數,不加網域名稱解析則引用區域性變數 include using namespace std int a 10 intmain lambda 函式與表示式 c 11 提供了對匿名函式的支援,稱為 lambda 函式 也叫...

菜鳥教程C 高階教程

c 特性 attribute net框架提供了三種預定義特性 attributeusage conditional obsolete 預定義特性attributeusage 預定義特性attributeusage描述了如何使用乙個自定義特性類,它規定了特性可應用到的專案的型別。attributeus...

C 菜鳥教程(C 資料型別)

使用程式語言進行程式設計時,需要用到各種變數來儲存各種資訊。變數保留的是它所儲存的值的記憶體位置。這意味著,當您建立乙個變數時,就會在記憶體中保留一些空間。您可能需要儲存各種資料型別 比如字元型 寬字元型 整型 浮點型 雙浮點型 布林型等 的資訊,作業系統會根據變數的資料型別,來分配記憶體和決定在保...