程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 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 指針,就禁止了。

      想了一下,解決方案是。

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved