在c ++中使用大型抽象类是好还是不好?

时间:2012-09-23 14:06:51

标签: c++ performance visual-c++ design-patterns bridge

我想知道在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*/
}

忽略了实现的其他部分(上述类使用的实现的实际实现和摘要)

由于

2 个答案:

答案 0 :(得分:1)

对于大多数现代C ++编译器,您可以假设构造对象时的性能开销不依赖于虚拟方法的数量。

当实际调用方法时,我希望开销不会大于任何替代实现方法的开销。

如果这些函数调用做了“复杂”的事情,比如网络操作,那么你无论如何都不需要为这种微观优化而烦恼,它将完全无关紧要。

答案 1 :(得分:0)

从性能视图来看,虚拟方法的数量在C ++中并不重要(无论方法的数量如何,都需要为间接支付一个小的不变价格。)