簡體   English   中英

當我希望調用基類構造函數時,如何在派生類中初始化成員const引用?

[英]How can I initialize a member const reference in a derived class, when I wish to call a base class constructor?

我什至在任何地方都找不到這個問題...所以這讓我相信我在這里做錯了什么...

可以說我有一個基類A,它的構造函數帶有int參數。 在我的派生類B中,我希望調用該構造函數,但還要初始化在B的構造函數中傳遞的成員引用。 我怎樣才能做到這一點? 如果調用基類構造函數,則找不到添加初始化列表的語法。 這可能嗎?

可以說我有:

Class Object
{
   Object(){}
}

Class A
{
   A(int number) : m_number(number){}

public:
   int m_number;
}

現在,如果我想調用A的非默認構造函數,該如何初始化m_obj?

例如

Class B : Class A
{
   B(int number, const Object& objRef) : A(number)
   {
       m_obj = objRef; //error, : must be initialized in constructor base/member  
                       // initializer list...but I cannot access an initializer list!!
   }

private: 
   const Object& m_obj;
}

就像我說的那樣,我的意圖可能在這里全錯了,但是如果有效,我將在Google上找不到任何語法示例。

對我好一點... :)

在構造函數的初始化列表中:

B(int number, const Object& objRef) : A(number), m_obj(objRef)
{}

(請注意,這與作為子類無關。您始終需要使用初始化列表來初始化作為引用的成員變量。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM