簡體   English   中英

C ++如何基於相同類型的臨時對象的值對派生類對象進行簽名?

[英]c++ how to sign a derived class object base on the value of a same type temp object?

Class Dad{

    public:
        Dad();
        Dad(char v){Dad_value = v;}

    private:
        char Dad_value;
};

class Child :public Dad{

    public:
        Child();
        Child(short v1, short v2, char v):Dad(v){Child_v1 = v1; Child_v2 = v2;}

    private:
        short int Child_v1;
        short int Child_v2;
};

//---------------------------------------

//define a Child array:
Child bd[100]; 

for (int i =0; i<100;i++){

    bd[i] = Child(a,b,c); 

}

從文件中讀取abc,兩個短1個字符。 如何簽名bd [i]。 我嘗試了重載“ =”,但是如何處理基類的私有部分是爸爸類。

謝謝。

您還需要在Dad類中聲明一個operator=(Dad& other){...} 然后從您的子類中調用它。 像這樣:

class Child{
  Child& operator=(Child& other){
    Dad::operator=(other);
    //more assignments
  };

這是因為您聲明了Dad的變量為private ,這意味着不允許任何非Dad::method()的變量對其進行修改。 通常,當事情是私人的時,這是有充分理由的。 即。 您不需要進行更改,或者有更好的方法可以進行更改。
如果確實要允許您的Child修改Dad的變量,則可以在Dad中將其設置為protected的變量。

暫無
暫無

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

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