私は通常、自分のコードがうまくいくために必要なメソッドに対して純粋な仮想関数を使用します。したがって、私はインターフェイスを作成し、他のユーザーは派生クラスを実装します。派生クラスはこれらの仮想関数だけをpublicとして持っていますが、私のコードでは呼び出さないので、いくつかの追加メソッドをprivateとして実装する必要があります。 これがOOPの良い習慣と考えられるかどうかわかりません(どのデザインパターンがありますか?)。 とにかく、私の質問は次のとおりです: ユーザーが純粋な仮想関数をオーバーロードすることはできますか?基本クラスで純粋仮想関数のオーバーロード
virtual void foo(int,double,double=0)=0;
が、それは非常に限られている:
すなわち
class Base
{
public:
Base();
virtual ~Base();
virtual void foo(int,double)=0;
};
class Derived:
public Base
{
private:
// methods
public:
Derived();
virtual ~Derived();
virtual void foo(int, double, double); //this doesn't work
};
溶液があり得ます。についてどう思いますか?
機能オーバーロードは、**異なるAPI **を表します。抽象基本クラスは**一貫したAPI **を表します。そうではない、これは意味をなさない。 –
あなたの例が 'class Derived:Base'を見つけられていませんか? – nonsensickle
@ nononsensical:そうですね、私はちょうど編集しました。ありがとう – Ale