類的成員函式直接隱式使用成員變數還是傳遞成員變數作為引數?

時間 2022-01-04 16:15:06

1樓:阮戚

第乙個方法都沒有使用類成員好吧~_~

第乙個方法應該說是乙個工具吧,就是計算和的工具,建議單獨封裝成靜態類中的方法

PS:另外,看見有些回答說方案一是脫褲子放屁,個人倒是覺得這是脫褲子拉稀※

2樓:

很多回答認為方案(1)是脫褲子放屁。不過我以為這是乙個值得思考的問題。

正如 @XZiar 所言,這是個設計抉擇的問題,題主應該也是當個設計問題問的。

這裡面的判斷準則是你怎麼定位 add 函式。你認為add函式是個狀態改變函式還是個工具函式?如果是狀態改變函式,那麼 add 函式呼叫者的就是想改變Explanation的狀態,心理預期就是如此,這種情況下應該用方案(2)。

如果是工具函式,那呼叫者只是把這個函式當做工具使用,這種情況下應該用方案(1),並且把add設定為靜態函式。

使用方案(1)會稍微複雜了一些,但還是有好處的。好處就是add函式更容易維護,因為這種情況下add不依賴Explanation的任何成員,維護者只需要關注函式傳入傳出引數,不需要具有Explanation的任何知識,大大減輕了維護者的心理負擔。所以,如果可能,還是盡量使用方案(1) 。

當然,有時候不好判斷add函式是個狀態改變函式還是個工具函式,似乎都可以。這種情況下可以考慮乙個判定準則:如果單獨把add函式從Explanation中拿出來,是夠還具有價值?

如果是,那就可以作為乙個工具函式。

3樓:

1. 函式2命名add,然後功能是把兩個成員變數相加?應該是個get之類的名字

2. 如果你使用1方法,那麼你還要建立兩個get函式去獲取private的 numA , numB,傳進去,你累嗎?

C 類的靜態成員函式可以訪問非靜態成員嗎

輝神 靜態成員函式只是和類實現了繫結,不支援和物件繫結,就是沒有this傳參,所以沒法訪問非靜態成員,如果非要訪問,你傳乙個物件指標進去 DTF丶 不行啊,我是這麼理解的,靜態成員函式所需內存在程式執行前就分配好了,非靜態成員必須要等到這個類在堆或者棧上分了記憶體才能用,所以如果靜態成員函式訪問非靜...

關於c 類中的this問題,成員函式過載

薛丁格的貓 我覺得你可能有一點沒搞清楚 this應為Screen const,為一常量指標,所指位址不能改變 位址確實是不可變的,但是指標指向的內容並不是常量,this表示的是指標指向的內容,應該是可以修改的。你可以從這一方面理解一下。 C primer這附近似乎是表述有誤 By default,t...

Python類直接呼叫成員變數後的輸出問題?

我剛開始也被Python的這個屬性迷惑過,因為Python是無需事先宣告即可使用變數的 這麼理解吧,如果像題中這麼定義的List叫做類成員 下面例子中的population 那麼會在這個類的所有例項中共享,並且可以無需宣告直接呼叫如 class name.member name 題主想要的變數是在這...