C++類中的成員類型

來源:互聯網
上載者:User

C++中的成員分為三種類型:公有成員,私人成員,保護成員。
      如果不特別指定,類裡所有的成員都是公有(Public)的,不用特地聲明。但是私人(Private)成員則是要一定聲明的。

  這三種類型才成員的區別在於,對於本類來說:
       公有成員,外部可以訪問的成員。
       私人成員,外部不可以訪問的成員。
       保護成員,外部不可以訪問的成員。

乍看起來,私人成員與保護成員的存取權限是相同的,使用私人成員就行了,貌似沒有必要再多出來一個保護成員。
       我們要相信,我們覺得自己挺明白,弄出C++的大牛比我們還明白,他們當然知道哪些是需要的哪些是沒用的,如果保護成員沒有用處,還會出現在C++中嗎?
       實際上,保護成員與私人成員的區別體現在繼承上。

繼承分為:公有繼承,私人繼承,保護繼承。
       公有繼承,基類的公有成員和保護成員作為衍生類別的公有成員,外部可以訪問;
       私人繼承,基類的公有成員和保護成員作為衍生類別的私人成員,外部不可以訪問;
       保護繼承,基類的公有成員和保護成員作為衍生類別的保護成員,外部不可以訪問;

  (外部指基類的外部,即衍生類別中可以訪問,在衍生類別的外部不能訪問該函數)

       這三種繼承中,衍生類別都不能訪問基類的私人成員。
       從繼承中,我們可以看出,保護成員和私人成員有本質上的區別。
       當然,也可以說在繼承中,保護成員和公有成員沒什麼區別。

       可以看出,保護成員就是夾在私人成員和公有成員間的一個第三者,說是第三者可能不太合適,應該是一夫二妻裡的老公,兩邊他都有關係,但是本質上他又和兩邊都不同(他是男的。。。)

通過以上的說明我們也可以看出,保護成員的作用主要是在繼承時才體現出來的。

可能有好事者又要問,那私人繼承和保護繼承有什麼區別,繼承來的成員都是外部不能訪問的啊?對於這個問題,繼承一次好辦,確實沒區別,但是如果再從衍生類別派生出衍生類別2,那就有區別了,因為私人成員是不能被再派生出來的衍生類別2訪問的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.