c c 整理 c 物件導向(4)

2021-08-02 11:09:59 字數 1106 閱讀 5632

下列對靜態資料成員的描述中,正確的是

a、靜態資料成員可以在類體中進行初始化

b、靜態資料成員不可以被類的物件呼叫

c、靜態資料成員不能收private控制符的作用

d、靜態資料成員可以直接用類名呼叫

解析:a錯誤。靜態資料成員必須在類外面初始化,以示與普通資料成員的區別

b錯誤cd正確

#include using namespace std;

class test

輸出:

constructor of test

main() start

constructor of test

顯然,這裡的執行順序為:首先進行全域性變數a的構造,然後進入main函式,再進行區域性變數b的構造。

對於乙個c++的空類,例

class empty

;

雖然empty類定義中沒有任何成員,但為了進行一些預設的操作,編譯器會加入以下一些成員函式,這些成員函式使得類的物件擁有一些通用的功能。

(1)預設建構函式和複製建構函式。它們被用於類的物件的構造過程。

(2)析構函式。它被用於類的物件的析構過程。

(3)賦值函式。它被用於同類的物件間的賦值過程。

(4)取值運算。當對類的物件進行取位址(&)時,此函式被呼叫。

建構函式可以被過載,因為建構函式可以有多個,且可以帶引數。

析構函式不可以被過載,因為析構函式只能有乙個,且不能帶引數。

五、關於過載建構函式的呼叫

class test

test(char* name, int len = 0)

test(char* name)

};int main()

下面對程式執行結果的描述中,正確的是( )

a、將會產生執行錯誤

b、將會產生編譯錯誤

c、將會執行成功

d、以上說法都不對

test定義了兩個建構函式。當編譯到10行時,由於建構函式的模糊語義,編譯器無法決定呼叫哪乙個建構函式,因此產生編譯錯誤。

答案:b

c c 整理 c 物件導向(3)

優勢 1 靜態資料成員沒有進入程式的全域性命名空間,因此不存在程式中其他全域性命名衝突的可能性。2 使用靜態資料成員可以隱藏資訊。因為靜態資料成員可以是private成員,而全域性物件不能 無論是在建構函式初始化列表中初始化成員,還是在建構函式體中對它們賦值,最終結果都是相同的。不同之處在於,使用建...

C 物件導向 4

下列對靜態資料成員的描述中,正確的是 a 靜態資料成員可以在類體中進行初始化 b 靜態資料成員不可以被類的物件呼叫 c 靜態資料成員不能收private控制符的作用 d 靜態資料成員可以直接用類名呼叫 解析 a錯誤。靜態資料成員必須在類外面初始化,以示與普通資料成員的區別 b錯誤cd正確 cpp v...

C C 筆記 C 物件導向

1 虛函式 定義虛函式的類稱為多型類,編譯器會為多型類自動生成乙個虛函式表vtable。vtable是乙個函式指標陣列,用來描述每個類的虛函式位址。多太類同時還有乙個指向虛函式表的指標,為類的物件訪問虛函式。vtable中還應包含typeinfo的資訊,用來做rtti。派生類的vtable應該相容其...