4 回答
TA貢獻1799條經驗 獲得超8個贊
public, protectedprivate.
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;};所有意識到的 Base也意識到 Base含 publicMember.只有孩子(和他們的孩子)知道 Base含 protectedMember.除了 Base意識到 privateMember.
下一步:
BaseChildBase.
如果繼承是 public,意識到的一切 Base和 Child也意識到 Child繼承自 Base.如果繼承是 protected,只有 Child,以及它的孩子們,都知道他們是從 Base.如果繼承是 private,除了 Child意識到了遺傳。
TA貢獻1830條經驗 獲得超3個贊
static_cast
公眾
是-遺產。按鈕是一個窗口,在任何需要窗口的地方,也可以傳遞一個按鈕。 class button : public window { };
受保護
受保護-實施-條件。很少有用。用于 boost::compressed_pair若要從空類派生并使用空基類優化來節省內存(例如,下面的示例不使用模板來保持當前狀態): 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! }};
私
已實施-在-條件下?;惖氖褂脙H用于實現派生類。對特征有用,如果大小重要(只包含函數的空特征將使用空基類優化)。經常 安全殼不過,這是更好的解決辦法。字符串的大小是非常重要的,所以這里經常使用它 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);};
私
保留實現細節 class window {private: int width;};
TA貢獻1818條經驗 獲得超11個贊
>基類的公共成員將是公共的(通常是默認的) 受保護的->基類的公共成員將受到保護 >基類的公共成員將是私有的
- 4 回答
- 0 關注
- 798 瀏覽
添加回答
舉報
