C 初始化列表的一些問題

2021-10-17 20:29:32 字數 1398 閱讀 1147

在我們建立類物件的時候,類物件的構造順序如下:

使用初始化列表的情況有三種:

需要初始化的資料成員是物件的情況

需要初始化const修飾的類成員以引用型別的成員資料

子類需要初始化父類的私有成員

輸出結果

如果沒有mytest():test(1,2,3){}初始化列表就會報錯

因為test有了顯示的帶引數的建構函式,那麼他是無法依靠編譯器生成無參建構函式的,所以沒有三個int型資料,就無法建立test的物件。test類物件是mytest的成員,想要初始化這個物件test,那就只能用成員初始化列表,沒有其他辦法將引數傳遞給test類建構函式。

注意:初始化列表在建構函式執行之前執行。

**如下(參考了之前學習設計模式時候的**):

#include

#include

using

namespace std;

class

context

;class

base

virtual

double

calc

(context& ctx)

virtual

~base()

;protected

: base* cc;};

class

son1

:public base

~son1()

virtual

double

calc

(context& ctx)};

class

son2

:public base

~son2()

virtual

double

calc

(context& ctx)

protected

: base* cc;};

intmain()

注意:初始化列表在進行初始化時的順序和類內成員宣告順序相同,和初始化順序寫法沒有關係;

預設建構函式foo(){}foo(int i = 0){}都是預設建構函式。兩者不能同時出現

在繼承中,只有初始化列表可以構造父類的private成員(需要顯式地呼叫父類地建構函式)。

class

foo}

;class

child

:public foo;}

;

關於初始化C 類成員的一些問題

在使用c 程式設計的過程當中,常常需要對類成員進行初始化,通常的方法有以下兩種 第一種方法 cmyclass csomeclass x 0 y 1 第二種方法 cmyclass csomeclass x 0 y 1 本文將要 這兩種方法的異同以及如何使用這兩種方法。從技術上說,第二種方法比較好,但是...

git初始化操作以及一些問題的解決

如果是從遠端倉庫clone下來的,注意哦,我們說的是clone的新的倉庫 一般而言,需要我們執行下面的幾行進行初始化一下才可以 git clone cd test 因為是新的倉庫,尚未進行初始化的操作,如果這個時候你執行 git pull origin master 或者執行 git push or...

scut協議配置工具初始化的一些問題

1.如果點選協議配置工具左上角的專案按鈕沒反應,說明資料庫沒有正確配置。2.資料庫建立指令碼執行如果亂碼,把utf 8改成ansi 3.如果contractdb不存在就自行建立資料庫。4.使用sql server初始化,使用者sa建立失敗。請檢查是否開啟了sa賬號登陸 登陸 已啟用 5.此外還需要開...