1.c++類 --用戶定義的類型(user-defined type, UDT)
2.信息隱藏(information hiding)
3.除了靜態(tài)數(shù)據(jù)成員外, 數(shù)據(jù)成員不能在類中被顯示地初始化
4.一個成員函數(shù)只能重載自己類的其他成員函數(shù)
5.數(shù)據(jù)隱藏的優(yōu)點(diǎn):
如果數(shù)據(jù)的訪問屬性是私有的, 則一般除了類的共有接口, 不能直接訪問私有成員
如果數(shù)據(jù)的訪問屬性是共有的, 則任何地方都可以直接訪問這個數(shù)據(jù)成員
但是, 如果類的實(shí)現(xiàn)變動了, 即那個成員改變了, 那么, 如果這個成員是私有的, 但共有接口沒改變, 則不需要修改使用這個類的代碼
如果這個成員是共有的, 那么, 直接訪問這個成員的任何代碼都需要做相應(yīng)的改變了
--所以, 數(shù)據(jù)封裝性自有它的優(yōu)點(diǎn)
6.訪問限定符(access specifier) public, private, protected
7.在某些情況下, 允許某個函數(shù)而不是整個程序可以訪問類的私有成員, 這樣做會比較方便, 友元(friend)機(jī)制允許一個類授權(quán)其他的函數(shù)訪問他的非公有
成員
8.友元聲明以關(guān)鍵字friend開頭, 只能出現(xiàn)在類的聲明中
9.因?yàn)橹挥挟?dāng)一個類的類體已經(jīng)完整時(shí), 它才被視為已經(jīng)被定義, 所以一個類不能有自身類型的數(shù)據(jù)成員, 但可以用指向自身類型的指針或引用作為數(shù)據(jù)成
員
10.類的定義不會引起存儲區(qū)分配, 只有當(dāng)定義一個類的對象時(shí), 系統(tǒng)才會分配存儲區(qū)
11.每個類成員函數(shù)的拷貝只有一份
12.把一個成員函數(shù)聲明為const可以保證這個成員函數(shù)不修改類的數(shù)據(jù)成員, 但是, 如果該類含有指針, 那么在const成員函數(shù)中就能修改指針?biāo)傅膶ο?
編譯器不會檢測為錯誤, 這常常令c++初學(xué)者吃驚
13.為了允許修改一個類的數(shù)據(jù)成員, 即使它是一個const對象的數(shù)據(jù)成員, 我們也可以把改數(shù)據(jù)成員聲明為mutable(易變的). mutable數(shù)據(jù)成員永遠(yuǎn)不會是
const成員, mutable成員中可以被更新
14.每個類成員函數(shù)都含有一個指向被調(diào)用對象的指針, 這個指針被稱為this:
在非const成員函數(shù)中, 它的類型是指向該類類型的指針
在const成員函數(shù)中, 是指向const類類型的指針
在volatile成員函數(shù)中, 是指向volatile類類型的指針
15.類的靜態(tài)成員被當(dāng)做該類類型的全局對象, 對于非靜態(tài)成員, 每個類對象都有自己的拷貝, 而靜態(tài)數(shù)據(jù)成員對每個類類型只有一個拷貝, 靜態(tài)數(shù)據(jù)成員只
有一份, 該類類型對所有對象共享訪問
16.同全局對象相比, 使用靜態(tài)數(shù)據(jù)成員有兩個優(yōu)勢:
靜態(tài)數(shù)據(jù)成員沒有進(jìn)入程序的全局名字空間
可以實(shí)現(xiàn)信息隱藏, 靜態(tài)成員可以是private成員, 而全局對象不能
17.靜態(tài)數(shù)據(jù)成員的類型可以是其他所屬類, 而非static數(shù)據(jù)成員只能被聲明為該類的對象的指針或引用
18.靜態(tài)數(shù)據(jù)成員可以被作為類成員函數(shù)的缺省實(shí)參, 而非static成員不能
19.靜態(tài)成員函數(shù)的聲明除了在類體中的函數(shù)聲明加上關(guān)鍵字static, 以及不能聲明為const或volatile之外, 與非靜態(tài)成員函數(shù)相同, 出現(xiàn)在類體外的函數(shù)
定義不能指定關(guān)鍵字static
20.靜態(tài)成員沒有this指針
21.類成員的指針必須總是通過特定的對象或指向該類類型的對象的指針來訪問
針對類對象和引用的.*
針對指向類對象的指針的->*
22.定義一個成員函數(shù)指針需要制定函數(shù)返回類型, 參數(shù)表和類:
int (CTest::*)();
int (CTest::*pmf)() = &CTest::test;
pmf = &CTest::test2;
23.靜態(tài)類成員屬于該類的全局對象和函數(shù)
24.聯(lián)合:一種節(jié)省空間的類
使用union是危險(xiǎn)的, 通過一個不適當(dāng)?shù)臄?shù)據(jù)成員以為的獲取到當(dāng)前存儲在union中的值]
25.c++標(biāo)準(zhǔn)庫提供了一個bitset類模板, 它可以輔助操作位的集合, 在可能的情況下, 應(yīng)盡可能使用它來取代位域
26.一個類可以在另一個類中定義, 這樣的類被稱為嵌套類(nested class)
嵌套類是其外圍類的一個成員
27.類也可以定義在函數(shù)體內(nèi), 這樣的類被稱為局部類(local class)
局部類的成員函數(shù)必須被定義在類定義中, 這就把局部類的成員函數(shù)的復(fù)雜性限制在幾行代碼中
|