C private繼承與public繼承

2021-08-27 14:26:05 字數 921 閱讀 6335

private:只能由1.該類中的函式、2.其友元函式訪問。

不能被任何其他訪問,該類的物件也不能訪問。

protected:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問。

但不能被該類的物件訪問。

public:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問,也可以由4.該類的物件訪問。

注:友元函式包括3種:設為友元的普通的非成員函式;設為友元的其他類的成員函式;設為友元類中的所有成員函式。

private 屬性不能夠被繼承。

使用private繼承, 父類的protected和public屬性在子類中變為private;

使用protected繼承,父類的protected和public屬性在子類中變為protected;

使用public繼承, 父類的protected和public屬性不發生改變;

c++將public繼承視為is-a關係。private繼承則並不意味著is-a關係,private繼承意味著implemented-in-terms-of(根據某物實現出)。private繼承意味著只有實現部分被繼承,介面部分被略去。private繼承在軟體設計層面上沒有意義,其意義只在於軟體實現層面。

private繼承:

1)編譯器不會自動將乙個子類物件轉換為乙個父類物件,而public繼承會;

2)子類中由父類繼承而來的成員(protected和public)都變為private。

implemented-in-terms-of也可以由復合實現。在應用域,復合意味著has-a;在實現域,復合意味著is-implemented-in-terms-of。盡可能使用復合實現這種關係,必要時(涉及protected成員或virtual函式時)才使用private繼承

C private繼承與public繼承

private 只能由1.該類中的函式 2.其友元函式訪問。不能被任何其他訪問,該類的物件也不能訪問。protected 可以被1.該類中的函式 2.子類的函式 3.其友元函式訪問。但不能被該類的物件訪問。public 可以被1.該類中的函式 2.子類的函式 3.其友元函式訪問,也可以由4.該類的物...

介面繼承(說明繼承)與實現繼承

宣告非純虛函式 impure virtual 的目的是讓繼承類繼承該函式的介面和預設實現。與純虛函式唯一的不同就是其為繼承類提供了預設操作,繼承類可以不實現自己的操作而採用基類提供的預設操作。宣告非虛函式 non virtual 的目的是為了令繼承類繼承函式介面及乙份強制性實現。相對於虛函式來說,非...

介面繼承與實現繼承

所謂介面繼承,就是派生類只繼承函式的介面,也就是宣告 而實現繼承,就是派生類同時繼承函式的介面和實現。我們都很清楚c 中有幾個基本的概念,虛函式 純虛函式 非虛函式。虛函式 虛函式是指乙個類中你希望過載的成員函式,當你用乙個基類指標或引用指向乙個繼承類物件的時候,你呼叫乙個虛函式,實際呼叫的是繼承類...