第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

私有繼承、公共繼承和保護繼承之間的區(qū)別

私有繼承、公共繼承和保護繼承之間的區(qū)別

手掌心 2019-06-01 14:46:06
私有繼承、公共繼承和保護繼承之間的區(qū)別.之間的區(qū)別是什么?public, private,和protectedC+中的繼承?我發(fā)現(xiàn)的所有問題都是針對具體案件的。
查看完整描述

4 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

為了回答這個問題,我想先用我自己的話來描述成員的訪問器。如果您已經知道這一點,請?zhí)綐祟}“Next:”。

我知道有三個訪問器:publicprotectedprivate.

讓:

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

    意識到了遺傳。


查看完整回答
反對 回復 2019-06-01
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

限制繼承的可見性將使代碼無法看到某些類繼承了另一個類:從派生類到基類的隱式轉換將無法工作,并且static_cast從基到派生也不起作用。

只有類的成員/朋友才能看到私有繼承,只有成員/朋友和派生類才能看到受保護的繼承。

公眾繼承

  1. 是-遺產。按鈕是一個窗口,在任何需要窗口的地方,也可以傳遞一個按鈕。

    class button : public window { };

受保護繼承

  1. 受保護-實施-條件。很少有用。用于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!
      }};

繼承

  1. 已實施-在-條件下。基類的使用僅用于實現(xiàn)派生類。對特征有用,如果大小重要(只包含函數(shù)的空特征將使用空基類優(yōu)化)。經常安全殼不過,這是更好的解決辦法。字符串的大小是非常重要的,所以這里經常使用它

    template<typename StorageModel>struct string : private StorageModel {public:
      void realloc() {
        // uses inherited function
        StorageModel::realloc();
      }};

公眾成員

  1. 骨料

    class pair {public:
      First first;
      Second second;};
  2. 存取器

    class window {public:
        int getWidth() const;};

受保護成員

  1. 為派生類提供更好的訪問

    class stack {protected:
      vector<element> c;};class window {protected:
      void registerClass(window_descriptor w);};

成員

  1. 保留實現(xiàn)細節(jié)

    class window {private:
      int width;};

請注意,C風格的強制轉換允許以一種定義和安全的方式將派生類強制轉換到受保護的或私有的基類,并將其轉換到另一個方向。應該不惜一切代價避免這種情況,因為它可以使代碼依賴于實現(xiàn)細節(jié)-但如果有必要,您可以使用這種技術。


查看完整回答
反對 回復 2019-06-01
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

它與基類的公共成員如何從派生類中公開有關。

  • >基類的公共成員將是公共的(通常是默認的)
  • 受保護的->基類的公共成員將受到保護
  • >基類的公共成員將是私有的

正如litb所指出的,公共繼承是傳統(tǒng)的繼承,您將在大多數(shù)編程語言中看到這一點。那就是它塑造了一種“是-A”的關系。私有繼承,是C+特有的AFAIK,是一種“在關系中實現(xiàn)的”關系。那就是你想使用派生類中的公共接口,但不希望派生類的用戶訪問該接口。許多人認為,在這種情況下,您應該聚合基類,而不是將基類作為私有基類,而是在派生的成員中進行聚合,以便重用基類的功能。


查看完整回答
反對 回復 2019-06-01
  • 4 回答
  • 0 關注
  • 782 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號