萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C++中的protected

C++中的protected

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

  “... Mark 是 Interviews 的主要設計師。他的有說服力的爭辯是基於實際經驗和來自真實代碼的實例。...”

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

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

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

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

C++中的protected 三聯

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

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

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

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

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

  想了一下,解決方案是。

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

copyright © 萬盛學電腦網 all rights reserved