更新:我刚刚知道 C++ 支持多重继承。我认为多重继承是解决这个问题的最好方法..
我有一个关于多个派生类共享方法的问题。代码如下:
class Base{
public:
virtual double method1();
virtual double method2();
}
class A::public Base{
public:
virtual double method1();
virtual double method2();
}
class B::public Base{
public:
virtual double method1();
virtual double method2();
}
class C::public Base{
public:
virtual double method1();
virtual double method2();
}
class D::public Base{
public:
virtual double method1();
virtual double method2();
}
对于A类和B类,method1()是一样的;对于 C 类和 B 类 method1() 是相同的。 (它使用基类成员作为参数)。
与其为 A 类和 B 类编写相同的 method1(),我认为这可以通过以下方式简化:
class subBase1::public Base{
public:
void double method1();
}
class A::public subBase1{}
class B::public subBase1{}
class subBase2::public Base{
public:
void double method1();
}
class A::public subBase2{}
class B::public subBase2{}
但是现在对于 B 类和 C 类,method2() 也是相同的(它使用基类成员作为参数)。我能做些什么?有没有办法让A&B共用一种方法,B&C共用另一种方法?
谢谢!
最佳答案
下面的代码将完成这个。
class Base
{
public:
virtual double method1() { /* code shared by A and B */ }
virtual double method2() { /* code shared by B and C */ }
};
class A : public Base
{
public:
virtual double method2() { /* code specific to A */ }
};
class B : public Base
{
};
class C : public Base
{
public:
virtual double method1() { /* code specific to C */ }
};
但是,值得注意的是,一旦进行了这些修改,B
就与Base
相同。可能值得重新评估您的继承层次结构以确定 A
和 C
是否应该从 B
继承,如下所示:
class B
{
public:
virtual double method1() { /* code shared by A and B */ }
virtual double method2() { /* code shared by B and C */ }
};
class A : public B
{
public:
virtual double method2() { /* code specific to A */ }
};
class C : public B
{
public:
virtual double method1() { /* code specific to C */ }
};
关于c++ - 不同的派生类共享相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226073/