C 物件導向 4

2021-08-07 08:08:57 字數 1419 閱讀 2141

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

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

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

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

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

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

b錯誤cd正確

[cpp]view plain

copy

#include 

using

namespace

std;  

class

test   

};  

test a;             //全域性變數

intmain()    

輸出:

[cpp]view plain

copy

constructor of test  

main() start  

constructor of test  

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

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

[cpp]view plain

copy

class

empty  

;  

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

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

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

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

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

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

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

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

[cpp]view plain

copy

class

test  

test(char

* name, 

intlen = 0)   

test(char

* name)   

};  

intmain()    

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

a、將會產生執行錯誤

b、將會產生編譯錯誤

c、將會執行成功

d、以上說法都不對

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

答案:b

c 小結(4) 物件導向

物件 是指看得見摸得著的具體特指的物件 類 是抽象概念,是乙個模板。是對某種型別的物件定義變數和方法。是具有相同屬性和方法的一組物件的集合。比如 電腦 一台dell膝上型電腦是類,因為電腦雖然看得見摸得著,但不是特指,dell膝上型電腦很多,不知道你指的是哪台 而若說我面前的這台dell電腦,就是物...

c 物件導向基礎4

一.namespace 命名空間 作用 解決不同類重名的問題 我們可以認為類是屬於命名空間的 當我們需要再乙個類中與另乙個類建立關係時,通過命名空間來區別不同的類。所以需要我們這樣做 匯入命名空間 方式有三 1 使用快捷鍵 alt shift f10 2 手動將滑鼠移到需要使用的類上通過游標來引用 ...

物件導向4

多型 多型 可以理解為事物存在的多種體現形態。1,多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。貓狗豬都是動物,但是動物不止這些,當其他動物時,eat的方法利用多型可以提高 復用性 abstract class animal class catextends ani...