1. 程式人生 > >c++基礎:C++的一些基本概念

c++基礎:C++的一些基本概念

//參考書:visual c++面向物件程式設計教程(王育堅) 一:C++的成員屬性有3種 1.private屬性(預設屬性)的成員只能由本類成員函式訪問或呼叫; 2.protect屬性的成員只能由本類成員函式或派生類成員函式訪問或呼叫; 3.public屬效能被本類函式或其他類函式通過物件訪問或呼叫;

C++的派生方式有3種 派生類定義:class <派生類名> : [<派生方式>]<基類名> 1.public派生:基類成員的訪問許可權在派生類中保持不變; 2.private派生(預設):基類所有的共有和保護成員在派生類中都成為私有成員; 3.protect派生:基類所有的共有和保護成員在派生類中都成為保護成員;

二:靜態成員static 1.靜態成員變數必須在類定義的外部初始化; 2.靜態成員函式只能訪問靜態成員; 3.可以將物件作為靜態成員的引數,然後在靜態成員函式中通過物件訪問它的非靜態成員

三:友元(友元函式/友元類)friend 友元可以是一般的函式,其他類的成員函式,友元類;友元函式/友元類可以訪問friend宣告所在的類的所有成員;一個類的友元函式一般將該類的引用作為函式形參建議友元宣告放在類體的開始位置,

四:派生類的建構函式 設A是基類,B是派生類:                        則B的建構函式定義為:  B::B(<形參宣告>):A(<引數表>)

引數表是形參宣告中所給出的部分引數,是要傳遞給基類的建構函式的引數,這樣,派生類的建構函式既可以初始化自己的資料成員,也可以通過基類建構函式初始基類的資料成員,當然,引數表中引數的個數和型別要與基類的某個建構函式的形參宣告一致

五:虛基類---是一種派生方式 由於C++允許多重繼承,一個派生類中可能保留某個基類的多個例項,會導致編譯二義性錯誤;例如:A派生了B和C; B和C一起派生了D,則D中保留了兩個A的例項(一個來自B,一個來自C)如果A中有某成員X,則d.x就會有二義解決方法: 1)利用作用域限定符(::)把基類的資料成員與下一層基類關聯起來。缺點:浪費儲存空間,使用時要指明訪問的成員時那個類間接派生過來的,使用麻煩;     例如: d.x可以改為d.B::x 或 d.C::x 2)虛擬函式:在派生時基類名前加virtual,注意基類定義時不需要virtual關鍵字     例如: class B : public virtual A   ...     class C : public virtual A   ...     class D : public B, public C   ...       這樣就會在D中只有一個A的例項,d.x也時合法的

六:多型性 1.靜態多型性---過載:                 在函式名或運算子相同的情況下,編譯器在編譯階段就能夠根據函式引數型別的不同來確定要呼叫的函式; 2.動態多型性---虛擬函式:                    可以用基類指標指向派生類物件,此時該指標只能訪問基類的資料成員和函式;            當派生類中某函式覆蓋了基類的某函式(相同的函式名和引數)時,該指標也只能訪問基類函式;            如果在定義基類函式時加virtual,則該指標就呼叫派生類的函數了;                   不能將建構函式定義為虛擬函式;                   可以將解構函式定義為虛擬函式:例如基類指標指向一個用new建立的派生類物件時,解構函式必須定義為虛擬函式,否則delete該派生類物件時只調用基類的解構函式

七:抽象類和純虛擬函式: 抽象類:至少有一個成員函式沒定義具體實現,或定義了一個protected訪問屬性的建構函式或解構函式,抽象類不能宣告物件,但可以宣告抽象類的指標;注意定義抽象類無需abstract 純虛擬函式:抽象類中那些沒定義具體實現的函式,在抽象類中宣告前加 virtual