C++中的protected

來源:互聯網
上載者:User

  “ ... Mark Linton 順便到我的辦公室來了一下,提出了一個使人印象深刻的請求,要求提供第三個控制層次,以便能支援斯坦福大學正在開發的 Interviews 庫中所使用的風格。我們一起揣測,創造出單詞 protected 以表示類裡的一些成員,...”

  “... Mark 是 Interviews 的主要設計師。他的令人信服的爭辯是基於實際經驗和來自真實代碼的執行個體。...”

  “...大約五年之後,Mark 在 Interviews 裡禁止了 protected 資料成員,因為它們已經變成許多程式錯誤的根源...”

  我不喜歡 protected ,但是今天,我偶爾用一下 C++ 時,不再有那麼多潔癖。反正很難用 C++ 做出穩定的設計,那麼,愛怎麼用就怎麼用吧。關鍵是別用 C++ 做特別核心的東西就成了。

  今天,碰到一個跟 protected 有關的問題,小鬱悶了一下。覺得可以寫寫。這個倒是個基本問題,貌似以前很熟悉。畢竟很多年不碰了,對 C++ 文法有點生疏。

  小時候,我一度以為這樣的代碼是不合法的。

  因為我擔心在 foo::foobar 中不能訪問 f 的私人成員變數 a。

  後來我明白了,所謂私人,是針對類的,而不是具體的對象。

  但是今天碰到另一個問題,讓我愣了一下。

  這次,在 foobar::bar 裡,訪問 this 的 a 成員允許,但 f 的 a 成員卻被禁止了。

  因為 foo::a 對 foobar 是 protected 的,foobar 的成員函數可以訪問自己的 a ,但是對於 foo 指標,就禁止了。

  想了一下,解決方案是。

  很壞味道。不過也不太所謂了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.