温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - best practice for C++ inheritance
c++ inheritance

其他 - C ++继承的最佳实践

发布于 2020-03-27 16:10:57

如果我想使用继承来避免重复common_method下面方法

int A::different_method()
{ return 1; }

int A::common_method()
{ return this->different_method()+1; }

int B::different_method()
{ return 2; }

int B::common_method()
{ return this->different_method()+1; }

最好的方法是什么?

一种方法是使用新方法从基类进行构造AB继承C

int A::different_method()
{ return 1; }

int B::different_method()
{ return 2; }

int C::different_method()
{ return 0; }

int C::common_method()
{ return this->different_method()+1; }

但是我也必须定义无用的东西有点烦人C::different_method在这种情况下的最佳做法是什么?

查看更多

查看更多

提问者
DingoTim
被浏览
14
NutCracker 2020-01-31 17:32

尝试使用纯虚函数

struct Base {
    virtual int different_method() = 0;

    int common_method() {
        return different_method() + 1;
    } 
};

struct Derived1 : Base {
    int different_method() override {
        return 1;
    }
};

struct Derived2 : Base {
    int different_method() override {
        return 2;
    }
};

现场查看