C++小知識點

1.C++中類可以多繼承

即一個子類繼承多個父類,而在C#和java中,可以多繼承多個接口,但是不能多繼承多個基類。
主要是考慮到多繼承的父類如果繼承同一個基類,那么就會產生二義性的問題,例如:

class A 
{
public:
    int a = 1;
};

class B
{
public: 
    int a = 2;
};

class C :public A, public B
{
public:
    void print() const
    {
        cout << a << endl;
    }
};

int main()
{
    C c;
    c.print();
    return 0;
}

這一段代碼會在編譯時報錯,其中讀取變量a時,可能是基類A中的變量也有可能是基類B中的變量,會有二義性的問題,改正的方法是在使用變量a時,顯示指明其位于哪個基類A::a
另外為了避免這種容易犯錯的寫法,應該盡量不適用多繼承類,一個不好的范例就是C++的iostream類,就是一個菱形繼承,包含頭文件過多效率低下,且不容易擴展,需要時刻主要到其菱形繼承的問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容