看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我先建立一個類別A: class A { public: Sub1(); Sub2(); Sub3(); }; 然後在建立一個類別B繼承自類別A: class B : public A { ... }; 照理說類別B會繼承到類別A的成員Sub1()、Sub2()、Sub3(),但我希望在使用類別B時, 不該使用到Sub2(),請問除了記在腦袋裡使用類別B時不要去用到成員Sub2(),有沒有辦 法從語法下手,讓我在程式編寫的過程中,如果使用到類別B的Sub2()成員時跳出錯誤訊 息? 希望得到的正確結果: 類別B不繼承類別A的特定成員。 程式跑出來的錯誤結果: 還不知道要怎麼寫所以還沒錯。 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Code::Blocks / Windows 有問題的code: (請善用置底文標色功能) 還不知道要怎麼寫所以還沒有code。 補充說明: 沒有。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.181.135
LPH66:在 B 中把 Sub2() 給 override 成丟出一個例外如何? 06/17 11:02
LPH66:(雖然這是 runtime 才知道而不是 compile-time 知道就是了) 06/17 11:03
loveme00835:如果想要繼承又不能用某些函式, 那麼這樣public繼承就 06/17 11:23
loveme00835:不合理了, 應該改用 private 繼承, 然後寫一些函式把 06/17 11:25
loveme00835:父類別函式包裝起來, 可以參考design pattern 的 clas 06/17 11:28
loveme00835:s adaptor 06/17 11:29
dk3208:public繼承就語意而言是一種"is a"或者"is in terms of"的 06/17 11:52
dk3208:的關係,不應該只有使用有部分介面的情況出現 06/17 11:53
tinlans:把 Sub2() 丟到 private 區段去,繼承上來外面就用不到。 06/17 13:51
tinlans:當然如果你希望用 A 的人可以用 Sub2(),那就得換方法繼承 06/17 13:53
h124224:也可以重新做一個B的Sub2() 普通呼叫就不會忽叫到Sub2() 06/18 13:31