4 回答

TA貢獻1799條經驗 獲得超8個贊
public
, protected
private
.
class Base { public: int publicMember; protected: int protectedMember; private: int privateMember;};
所有意識到的 Base
也意識到 Base
含 publicMember
.只有孩子(和他們的孩子)知道 Base
含 protectedMember
.除了 Base
意識到 privateMember
.
下一步:
Base
Child
Base
.
如果繼承是 public
,意識到的一切 Base
和 Child
也意識到 Child
繼承自 Base
.如果繼承是 protected
,只有 Child
,以及它的孩子們,都知道他們是從 Base
.如果繼承是 private
,除了 Child
意識到了遺傳。

TA貢獻1830條經驗 獲得超3個贊
static_cast
公眾
是-遺產。按鈕是一個窗口,在任何需要窗口的地方,也可以傳遞一個按鈕。 class button : public window { };
受保護
受保護-實施-條件。很少有用。用于 boost::compressed_pair
若要從空類派生并使用空基類優(yōu)化來節(jié)省內存(例如,下面的示例不使用模板來保持當前狀態(tài)): struct empty_pair_impl : protected empty_class_1 { non_empty_class_2 second; };struct pair : private empty_pair_impl { non_empty_class_2 &second() { return this->second; } empty_class_1 &first() { return *this; // notice we return *this! }};
私
已實施-在-條件下。基類的使用僅用于實現(xiàn)派生類。對特征有用,如果大小重要(只包含函數(shù)的空特征將使用空基類優(yōu)化)。經常 安全殼不過,這是更好的解決辦法。字符串的大小是非常重要的,所以這里經常使用它 template<typename StorageModel>struct string : private StorageModel {public: void realloc() { // uses inherited function StorageModel::realloc(); }};
公眾
骨料 class pair {public: First first; Second second;};
存取器 class window {public: int getWidth() const;};
受保護
為派生類提供更好的訪問 class stack {protected: vector<element> c;};class window {protected: void registerClass(window_descriptor w);};
私
保留實現(xiàn)細節(jié) class window {private: int width;};

TA貢獻1818條經驗 獲得超11個贊
>基類的公共成員將是公共的(通常是默認的) 受保護的->基類的公共成員將受到保護 >基類的公共成員將是私有的
- 4 回答
- 0 關注
- 782 瀏覽
添加回答
舉報