物件導向之建構函式和析構函式之五

2021-06-15 10:17:54 字數 624 閱讀 3378

題:請看下面一段程式:

//#include "stdafx.h"

#include #include #include class b

{private:

int data;

public:

b(){ std::cout<

(1)該程式輸出的結果是什麼?為什麼會有這樣的輸出?

(2)b(int i):data(i),這種用法的專業術語叫什麼?

(3)play(5),形參型別是類,而5是個常量,這樣寫合法嗎?為什麼?【英國著名圖形影象公司a2023年面試題】

答案:(1)程式的輸出結果為:

注:5首先轉換成b型別,呼叫乙個有參的建構函式,然後play返回之後,區域性變數b會被析構掉。整個程式返回後,temp會呼叫析構函式。

(2)帶引數的建構函式,冒號後面是成員變數初始化列表(members initialization list)。

(3)合法。單個引數的建構函式如果不新增explicit關鍵字,會定義乙個隱含的型別轉換(從引數的型別轉換到自己);新增explicit關鍵字會消除這種隱含轉換。

C 之建構函式和析構函式

我們已經知道了物件就是類的例項,二者的關係就相當於資料型別與它的變數的關係。每個物件區別於其他物件的地方就是依靠它的自身屬性,即資料成員的值。c 中,物件在定義的時候進行的資料成員的設定,稱為物件的初始化。同樣,在特定物件使用結束時,還要對資料成員進行一些清理工作。c 中對類的初始化和清理的工作,分...

C 之建構函式和析構函式

一 建構函式 1 物件的初始化和建構函式 類是一種抽象的資料型別,它不占用儲存空間,不能容納具體的資料。因此在類宣告中不能給資料成員賦初值。例如 錯誤 class complex 與使用變數一樣,使用物件時也應該先定義,後使用。在定義物件時,對資料成員賦初值,稱為初始化。例如 class compl...

C 之建構函式和析構函式強化

構造與析構呼叫順序 include class test9 1 析構的順序和構造的順序相反,先構造的後析構 test9 1 private int m a 物件初始化列表,解決乙個類中有另乙個沒有無參構造的類的物件的初始化 class test9 2 test9 2 private test9 1 ...