類和物件(下)

2021-09-12 08:39:41 字數 1338 閱讀 7303

1.建構函式體賦值

因為初始化初始化一次而建構函式可以進行多次賦值,所以不能稱為初始化。

2.初始化列表

以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個"成員變數"後面跟乙個放在括 號中的初始值或表示式

1)每個變數在初始化列表中只能出現一次

2)類中包含以下成員,必須放在初始化列表位置進行初始化​

a.引用變數成員​

b.const成員變數​

c.類型別成員(該類沒有預設建構函式)

3)盡量使用初始化列表初始化,因為不管你是否使用初始化列表,對於自定義型別成員變數,一定會先使 用初始化列表初始化4)成員變數在類中宣告次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先後次序無關

c++11初始化

在宣告的時候給乙個值,相當於給建構函式乙個預設值

3.explicit關鍵字

用explicit修飾建構函式,將會禁止單參建構函式的隱式轉換

4.static成員

1)它修飾的成員類裡面的所有成員共享,並且只能在類外定義

2)靜態成員函式沒有隱藏的this指標,不能訪問非靜態成員

3) 靜態成員和類的普通成員一樣,也有public、protected、private3種訪問級別,也可以具有返回值, const修飾符等引數

5.友元

1)友元函式友元函式可訪問類的私有成員,但不是類的成員函式 友元函式不能用const修飾 友元函式可以在類定義的任何地方宣告,不受類訪問限定符限制 乙個函式可以是多個類的友元函式 友元函式的呼叫與普通函式的呼叫和原理相同

2)友元類友元類的所有成員函式都可以是另乙個類的友元函式,都可以訪問另乙個類中的非公有成員。

a.友元關係是單向的,不具有交換性。 比如上述time類和date類,在time類中宣告date類為其友元類,那麼可以在date類中直接訪問time 類的私有成員變數,但想在time類中訪問date類中私有的成員變數則不行。

b.友元關係不能傳遞 如果b是a的友元,c是b的友元,則不能說明c時a的友元。

6.內部類內部類就是外部類的友元

1)內部類可以定義在外部類的public、protected、private都是可以的。

2)注意內部類可以直接訪問外部類中的static、列舉成員,不需要外部類的物件/類名。

3)sizeof(外部類)=外部類,和內部類沒有任何關係。

7.封裝

c++通過類,將乙個物件的屬性與行為結合在一起,使其更符合人們對於一件事物的認知,將屬於該物件的 所有東西打包在一起;通過訪問限定符選擇性的將其部分功能開放出來與其他物件進行互動,而對於物件內 部的一些實現細節,外部使用者不需要知道,知道了有些情況下也沒用,反而增加了使用或者維護的難度,讓 整個事情複雜化。

類和物件(下)

1.什麼是建構函式 建構函式是一種隨著物件建立而被呼叫的公有成員函式,有且僅在定義物件時自動執行一次,它的主要用途是為物件做初始化。2.建構函式的特點 3.初始化列表 格式 以乙個冒號開始,接著是乙個逗號分割的資料成員列表,每個 成員變數 後面跟乙個放在括號中的初始值或表示式。注意點 1.每個成員在...

類和物件(下)

1.建構函式的初始化 include using namespace std class student private int id int name 對於上面這個類來說,呼叫建構函式的時候,物件中已經有了乙個類的初始值。但是不能將其當作類物件成員的初始化,建構函式體內的語句只能將其稱作賦初值,而...

C 類和物件(下)

2.static成員 3.c 11的成員初始化新玩法 4.友元 5.內部類 如下 class date private int year int month int day 如下 class date private int year int month int day 無explicit 如下 c...