【C++基礎】公有,私有和受保護的繼承
對類所繼承的成員的訪問由基類中的成員訪問級別和派生類派生列表中使用的訪問標號共同控制。
派生類可以進一步限制但不能放鬆對所繼承的成員的訪問。
- public inheritance:基類成員保持自己的訪問級別:基類的public成員為派生類的public成員,基類的protected成員為派生類的protected成員。
- protected inheritance:基類的public和protected成員在派生類中為protected。
- private inheritance:基類的所有成員在派生類中為private成員。
示例:
class Base
{
public:
void basemen(); // public member
protected:
int i; // protected member
// ...
};
struct Public_derived : public Base
{
int use_base() {return i;} // ok; derived classes can access i
// ...
};
struct Private_derived : private Base
{
int use_base() {return i;} // ok; derived classes can access i
};
Base b;
Public_derived d1;
Private_derived d2;
b.basemen(); // ok;
d1.basemen(); // ok; basemen is public in the derived class
d2.basemen(); // error; basemen is private in the derived class
struct Derived_from_Private : public Private_derived
{
// error; Base::i is private in Private_derived
int use_base() {return i;}
};
struct Derived_from_Public : public Public_derived
{
// ok; Base::i remains protected in Public_derived
int use_base() {return i};
};
private inheritance:
- private繼承是實現繼承,不是介面繼承;
- 如果classes之間的繼承關係是private,編譯器不會自動將一個derived class物件轉換為一個base class物件;
- private繼承並不意味著is-a關係;
- private繼承在軟體設計層面上沒有意義,其意義只及於軟體實現層面;
class Base { };
class Derived : private Base { };
void test(Base* rhs){}
Base b;
Derived d;
test(&b); // ok;
test(&d); // error;
相關文章
- C++繼承:公有,私有,保護C++繼承
- C++ 公用、私有和受保護的繼承C++繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 公有繼承、私有繼承和保護繼承之間的對比繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- C++繼承一之公有繼承C++繼承
- 【c++基礎】菱形繼承問題C++繼承
- java 繼承的基礎(轉)Java繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- [C++]繼承和派生類C++繼承
- java繼承基礎詳解Java繼承
- JavaScript基礎: 類與繼承JavaScript繼承
- C++繼承C++繼承
- C++中的繼承C++繼承
- corejava基礎知識(1)-繼承Java繼承
- javascript基礎-原型鏈與繼承JavaScript原型繼承
- C++ | 類繼承C++繼承
- C++菱形繼承C++繼承
- [c++] 繼承和多型整理二C++繼承多型
- C++虛繼承的概念C++繼承
- JavaSE基礎知識學習-----繼承Java繼承
- 區塊鏈安全如何保證?公有私有哪家強?區塊鏈
- [打牢基礎系列]JavaScript的類與繼承JavaScript繼承
- 『無為則無心』Python物件導向 — 55、多層繼承和繼承中的私有成員Python物件繼承
- C++ class 和 struct 可以相互繼承嗎C++Struct繼承
- C++繼承體系C++繼承
- c++中的繼承關係C++繼承
- C++多繼承的細節C++繼承
- JS基礎-完美掌握繼承知識點JS繼承
- Java基礎之淺談繼承、多型Java繼承多型
- 玩家——受傷後的保護狀態
- java基礎:繼承中的構造方法規則Java繼承構造方法
- JS原型繼承和類式繼承JS原型繼承
- JavaScript公有屬性、私有屬性、公有方法和原型方法JavaScript原型
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- 說說C++多重繼承C++繼承
- c++ 虛繼承詳解C++繼承
- c++ 記憶體 繼承C++記憶體繼承