3

私は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; }
};

私の質問は次のとおりですGrandParentMethodParentクラスで宣言すると、しばらくしてからクラスを実装しやすくなりますChild(抽象メソッドのヘッダーを1つ確認するだけで済みます)が、パフォーマンス(メモリ?CPU?)の問題はありますか?

4

2 に答える 2

0

設計上の問題が発生する可能性があります (例: 基本クラスの列挙型を反映する別の列挙型がない)。もう 1 つの問題は、抽象関数が実装を持つことができることです。

struct A {
    virtual void f() = 0;
};
void A::f() {}

struct B : A {
    virtual void f() override = 0;
};

struct X : A {
    // Delegates to A::f, which is well defined
    virtual void f() override { return A::f(); }
};

struct Y : B {
    // Delegates to B::f, which is a 'undefined reference'.
    virtual void f() override { return B::f(); }
};

ただし、パフォーマンスの問題はありません。

于 2013-10-02T18:05:26.717 に答える