剛開始學習c++時,class中有public、private、protected三種型別來修飾變數、函式。
其中private的意義是保護成員,所以在class中一概使用private修飾所有的成員,這樣能夠達到很好的保護class的作用,在開始的幾年工作中也確實得到很好的反饋。
但是,後來逐漸發現這樣的class拓展性不是特別好,它可以比較自由的被呼叫,但是不可以很方便的被繼承。
繼承時,一般會使用public class的方式,但是幾乎沒法對class中的成員做出直接性的修改,只能借助開放的介面操作(除非文件寫的非常好,或者對該類分析較透徹,否則不敢隨便動裡面的成員)。那麼請問,這還是繼承嗎?它有很大的自由性嗎?
本人認為,class中成員應當盡量用public修飾(這樣修飾時,開發人員會認為這是個外界易改的成員,操作時需要特別注意)(如果對外界公開介面需要與普通介面區分,可以將其設為protected);如果某個變數由外界改變會影響內部的機制,甚至影響class的正常工作,那麼需要將其修改為private,並在注釋中註明其涉及的內部機制;最後有人可能會說,就算這樣也不希望某些變數給外界使用,那麼可以將public改為protected即可。
如果按照上面的思路,class能夠較為方便的被繼承,同時protected又能防止外界直接修改,關鍵時刻(遇到著急專案時)也可將protected改為public救急。
關於private修飾的外界改變會影響內部機制的成員,例如:某個變數涉及與其他幾個變數的聯動,如需要加鎖操作的變數。
放棄你,並不是放棄愛你
痛苦的不是過去,而是記憶.回首過往的點滴,這段感情就像乙個沙漏,哪怕自己投入的再多,付出的再多,那沙子還是會一點點的流走,到最後握在手裡的只是一縷清風,和自己早已被風吹幹的淚痕 只有深愛的人才會讓你笑的最甜,卻也讓你痛的最真!回憶固然傷感亦美好,不如把這點唯一的美好,放在心底收藏至永遠.至少,我還有...
物件導向並不是必要的
程式開發並非一定要物件導向不可,物件導向是一種方式,但是不是唯一的方式,這種方式很多時候有用,不代表任何時候都是最高效的,更不是唯一的真理。物件導向將相關的狀態屬性和操作方法放在乙個實體中,起到了歸類和分而治之的作用。對於乙個系統來說,這個是最根本的方法。但是物件導向的分而治之並不完美。面向過程也有...
物件導向並不是必要的
程式開發並非一定要物件導向不可,物件導向是一種方式,但是不是唯一的方式,這種方式很多時候有用,不代表任何時候都是最高效的,更不是唯一的真理。物件導向將相關的狀態屬性和操作方法放在乙個實體中,起到了歸類和分而治之的作用。對於乙個系統來說,這個是最根本的方法。但是物件導向的分而治之並不完美。面向過程也有...