永任問我private func要怎麼用
要我舉例...但是我手上的例子都蠻...隱誨的...@@
所以我要來用嘴巴說啦!
考慮所有的組合
總共有
public func
public data
protected func
protected data
private func
private data
從學理上來說 一個obj當最瞭解他自己可以做什麼事
譬如說你寫了個tv 那tv應該有相對應的on off member func
你只要按下去就好了 而不用去管他要用多少電壓 要接什麼天線...etc
memeber func 又稱做method 就是處理這個class本身的意思
(member func是個比較實作層面的說法 method是比較design層面的說法)
習慣上 所有的data應該都是private
對程式的其他部分而言 他只要你可以正常工作就好
不需要知道你這個class是怎麼完成這件事的
當然就不需要知道你的data member了
會比較奇怪的事private func和protected func
先看private func 這是個只有自己人(其他member func)才可以呼叫的func
也就是說 從design上來說 這就是一種designer不願意其他人
而其他人也不需要知道的func 所以 private func是一種class內部的實作工具
譬如說 你的TV提供好幾種開機方式(我一時想不到比較實際的例子...@@)
譬如說是所需要的參數都不同 因為都是開機 所以func的實作是相似的
那乾脆寫一個可以接受所有參數的private func來讓其他
public func使用 這時你這個func就是一種實作 是不需要讓程式的其他部分知道的
所以就設成private protected是相似的 但是一種你願意讓你的子子(沒有孫孫歐)
也可以利用的內部實作工具
============================================================================
恭喜了 在這篇文章之後 你們跨入了OO的領域
可以去看看我說的
effective c++ 2/e
more effective c++
這是兩本以c++的深入討論為主題的書 等這學期結束
你們應該可以上手了
讓我說說書上的一句話 這是我印象中的版本:
你知道什麼是destructor 你知道什麼是private
你知道什麼是virtual 你知道什麼是inline
但是你機乎一定不知道什麼是
inline virtual private destructor
1+1 != 2 這就是就C++難的地方
安仔 有空可以把essential看完... 這部分 他花了不少的心思
雖然新手應該看不懂 你現在應該看的懂了
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 218.160.10.93