下列對靜態資料成員的描述中,正確的是
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應該相容其...