C 特性筆記

2021-06-19 06:15:58 字數 1404 閱讀 7050

此處是本人對c++的一些筆記,c++高手請直接略過。翔哥看到了也請略過。

函式前使用virtual修飾,表示該函式是虛函式,那麼虛函式有什麼用呢?虛函式對於程式的多型起到了很重要的作用。

具體的使用簡單介紹一下:

class a

};class b : public a

}然後在main函式中,我們如此呼叫:

b *pb = new b();

pb->run();

此時應該列印的是「b run」,但是如果b沒有實現run這個函式的話,那麼列印的就是"a run",即執行了a中的run函式。

如果父類的某個函式是virtual修飾,同時該函式沒有方法體,該函式賦值為1,那麼該函式是虛函式,如:

virtual void jump() = 0;
含有純虛函式的類是抽象類,抽象類是不能例項化物件的,所以子類必須實現該純虛函式才能例項化物件。這是強制的,所以對於開發人員的結構設計來說很有用。如果子類沒有實現該函式,那麼,子類也是純虛函式,所以是不能例項化物件的。

class animal

~animal()

virtual void run()

void breathe()

//這樣寫,表示該函式是純虛函式,含有純虛函式的類是 抽象類,是不能例項化物件的。

//所以,子類如果不重寫純虛函式的話,那麼子類也仍然是純虛函式,子類也就不能例項化純虛函式。這樣子類就必須去實現這樣乙個函式,才能例項化物件。

virtual void jump() = 0;

};

class fish : public animal

~fish()

void run()

void jump()

private:

const int a;

};

可以fish在繼承animal時,因為animal的建構函式是帶兩個引數的,而fish的建構函式去找animal的預設建構函式,這時會找不到animal:animal()的。所以這裡先呼叫父類animal的建構函式.

fish():animal(40 ,30)

如果想對fish的變數a進行初始化,可以在這裡進行。

fish():animal(40 ,30) ,a(1)

為了避免類檔案被重複引用,所以我們在定義的時候,就可以使用預編譯指令防止重複呼叫。

#ifndef class_a

#define class_a

class ...................blalala(此處省略很多)

#endif

&符號在定義的時候表示定義了乙個引用,在其他地方使用表示取位址符。

函式引數使用&可以避免拷貝帶來的開銷。

C 特性類 筆記

conditional obsolete 附加表示目標結構的狀態 新增乙個類,以attribute結尾 這個類繼承 system.attribute 宣告為私有類 sealed 定義需要描述的字段和屬性 attributeusage 裡面的值為該特性可以應用到那些結構上 attributetarge...

C 特性學習筆記

本筆記摘抄自 記錄一下學習過程以備後續查用。特性提供功能強大的方法,用以將元資料或宣告資訊與 程式集 型別 方法 屬性等 相關聯。特性與程式實體關聯後,即可在執行時使用名為 反射 的技術查詢特性。特性,如serializable,它其實就是乙個類,定義方式跟類一樣,且所有特性都是直接或間接繼承自at...

C 特性自用學習筆記

本文用於隨手記錄一些自己學習中碰到的c 特性。對於以下std tuple std tuple int,std string,double foo 在未有該特性前,對其解包很麻煩,使用std get要寫一大串 std cout std get 0 foo std get 1 foo std get 2...