0

C ++で複数の純粋仮想メソッドを使用して抽象クラスを作成するのが良いかどうか知りたいですか?

たとえば、セッション開始プロトコルのダイアログを実装するようないくつかの状況では、ブリッジパターンを使用して実装できることがわかりました。しかし、一般的な操作のための抽象基本クラスを持つと、非常に大きな抽象クラスを持つことになります。パフォーマンスの観点から、そのようなクラスを使用および実装することの効果は何ですか?

それぞれが独自の実装を持っている異なるダイアログがあると考えてください。(例:InviteDialog、RegisterDialog、InfoDialog、...)

ブリッジパターンの適用:

class IIDialog{
public:
/*there are multiple pure virtual methodes at least 15*/
virtual int32_t SendResponse(ISipMessage* response) = 0;
protected:
/*there are multiple methods that use pure virtual methods*/
int32_t Send_Response(){retun SendResponse(response);}
}

class IInviteDialog : public IIDialog
{
/*Implemet virtual methods*/
}

class IRegisterationDialog : public IIDialog
{
/*implement virtual methode*/
}

実装の他の部分は無視されます(上記のクラスで使用される実装の実際の実装と要約)

ありがとう

4

2 に答える 2

1

最新のC++コンパイラでは、オブジェクトを構築する際のパフォーマンスのオーバーヘッドは仮想メソッドの数に依存しないと想定できます。

そして、実際にメソッドを呼び出すとき、私はオーバーヘッドが他の実装メソッドのオーバーヘッドよりも大きくないことを期待します。

そして、これらの関数呼び出しがネットワーク操作のような「複雑な」ことを行う場合、とにかくそのようなマイクロ最適化について気にする必要はありません。それは完全に無関係です。

于 2012-09-23T14:12:49.740 に答える
0

パフォーマンスの観点から、仮想メソッドの数はC ++では重要ではありません(メソッドの数に関係なく、間接参照に対して支払う一定の価格がわずかにあります)。

于 2012-09-23T14:12:29.403 に答える