OO 嘅 inherit 問題

本帖最後由 ghostkcleung 於 2021-4-12 21:14 編輯

咁多年都無關心過呢樣嘢,
如果 1 個 class 俾人 inherit 好多次,
就會越多 Depreciate。
唔用嘅嘢都係會佔 Memory,
呢個問題係咪無得避免?

// class B 承繼 A,即係裡面有 a,
// 但係無機會用到。

class A {
  private:
    int a;
  public:
    virtual int getValue(){
       return a;
    }
}

class B: public A {
   private:
     int b;
   public:
      int getValue () {
         return b;
      }
}

係, 冇錯
btw, 你可以用super::getValue()

TOP

係啦,電腦發展到今日,
其實一個 1MB 程式裡面,
我諗有超過 50% 嘅嘢係多餘,
依又可能額外花多咗好多倍嘅 Workload 去兜大咗個圈。

TOP

係啦,電腦發展到今日,
其實一個 1MB 程式裡面,
我諗有超過 50% 嘅嘢係多餘,
依又可能額外花多咗好多倍 ...
ghostkcleung 發表於 2021-4-13 01:48


咁,你就要買更多 RAM,更多 Storage,更快 CPU!得咗,加速經濟發展!

TOP

咁多年都無關心過呢樣嘢,
如果 1 個 class 俾人 inherit 好多次,
就會越多 Depreciate。
唔用嘅嘢都係會 ...
ghostkcleung 發表於 2021-4-12 21:11


呢到首先問, 其實個寫法有無違背 oo 先?  我唔太記得啦.

其次, 呢個寫法本身有無問題, 係設計去失誤, 定係必然會發生?  要睇 int a 本身係放乜野, 點解要放 parent class?

換個角度, 可能寫個 pure virtual parent, 再分開 class A, class B,  各自有自已 int a, int b, implement 自己嘅 getValue, 咪可以唔會有彊屍 variable.

而家咁睇, 無事件, 無歷史背景, 你當然啱.  因為你將所有可能錯嘅野都隱藏左.

TOP

別外, 你可以睇下 mfc, x macro 等.
佢地用 programming 技巧令呢啲問題得以改善.

TOP

呢個就係OO本身既死症,"You wanted a banana but you got a gorilla holding the banana"

TOP

其實 樓主既問題係 getValue() 個 function 重覆左??

呢個似係 design 問題多過 OO 問題...
如果一個 class (當 C) 有 variable + interface, 個 class A 入面係 load Class C d variable and/or const 而冇任何 variable 係 class A, 咁  class B 係改 class C
variables , 咁應該就唔會有呢個問題~

又或者 class A 用 "public / protected int a" instead of "private int a" 去改 parent  個 variable 又得唔得?

TOP

實務上 inherit 係俾你將啲嘢寫得更有條理同結構,如果可以預期一大堆嘢同質性高嘅就用啦,唔係嘅話你分開寫可能仲好,至於效能就由佢啦,(如果20年前或者30年前就真係要考慮咗先,)到你要考慮考能嘅時候就夠功能處理了。

TOP

實務上 inherit 係俾你將啲嘢寫得更有條理同結構,如果可以預期一大堆嘢同質性高嘅就用啦,唔係嘅話你分開 ...
Mathk 發表於 2021-4-19 23:19


呢個就係好多developer唔鍾意OOP既理由,java/OOP興起就培養出一D唔理資源既programmer, C++用64K內做到既野. 用java可能起個init object 都超過呢個數了.

TOP