簡體   English   中英

使用派生類變量的基類函數

[英]Base class functions that use derived class variables

在c ++中,是否存在在基類中創建可以使用派生類變量的函數的標准方法?

class Foo{
private:
    int x;
public: 
    Foo(){
        x = 2;
    }
    void print(){
        std::cout << x << std::endl;
    }
};

class Derived : public Foo{
private:
    int x;
public: 
    Derived(){
        x = 4;
    }

};


void main()
{
    Derived a;
    a.print();
}

此代碼打印基類(2)的變量。 有沒有一種方法可以使許多派生類使用的函數使用類的私有變量而不將其作為參數傳遞?

編輯:我的意圖是,避免為每個派生類編寫相同的代碼。 例如,我總共需要一個get_var(),但此函數應返回該類的變量。 我知道我可以進行虛擬和覆蓋,但是我一直在尋找不需要一次又一次編寫的方法。

不,基類不可能直接訪問派生類中的任何內容。 派生類與其基類共享任何內容的唯一方法是重寫基類的虛擬成員函數。

但是,對於您而言,這不是必需的:派生類可以在基類中將變量x設置為protected ,然后將其聲明為不必要的:

class Foo{
protected: // Make x visible to derived classes
    int x;
public: 
    Foo(){
        x = 2;
    }
    void print(){
        std::cout << x << std::endl;
    }
};

class Derived : public Foo{
public: 
    Derived(){
        x = 4;
    }
};

暫無
暫無

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

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