此處是本人對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...