c ++ - 从抽象类继承的declering继承的抽象方法是否有任何性能问题?

EOG*_*EOG 3 c++ performance abstract-class

我有3节课

class GrandParent
{
    virtual int GrandParentMethod() = 0;
};

class Parent : public GrandParent
{
    virtual int ParentMethod() = 0;
    virtual int GrandParentMethod() = 0;
};

class Child : public Parent
{
    int ParentMethod() { return 1; }
    int GrandParentMethod() { return 0; }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:GrandParentMethodParent类中进行Declering 使得Child在一段时间后实现类更容易(只需要为抽象方法检查一个标头),但它是否有任何性能(内存?cpu?)问题?

Mar*_*k B 5

应用程序应该没有性能或CPU影响,因为该方法是抽象的,尽管编译可能需要更长的时间,因为必须读取更多的代码.

但请注意,这不是常见的惯用C++实践,最终可能会使您的一些代码读取器/维护者感到困惑.此外,Parent如果例如Grandparent方法的签名发生变化,则通过在该级别重新声明它,您还有一个地方可以更改(或冒着意外隐藏方法的风险).

  • *...如果祖父母方法的签名发生变化.* - 应该考虑使用`覆盖` (2认同)