c++类的继承设计

  • 本文关键字:继承 c++ c++ inheritance
  • 更新时间 :
  • 英文 :

class Base 
{
public:
static int  GetType_S()
{
return 1;
}
virtual int GetType()
{
return GetType_S();
}
};
class Son1 : public Base 
{
public:
static int GetType_S()
{
return 2;
}
virtual int GetType()
{
return GetType_S();
}
};

我的问题是:当我需要一些其他类,如"Son1,Son2…",每个类都应该实现GetType和GetType_S函数,这两个函数是重复的。那么如何优雅地设计这些类,让子类只实现一个功能?最好不要使用宏。

你可以有一个类模板,每个SonN继承,反过来继承Base

template <int Type>
class Middle : public Base 
{
public:
static int  GetType_S()
{
return Type;
}
virtual int GetType()
{
return GetType_S();
}
};
class Son1 : public Middle<2> {};
class Son2 : public Middle<3> {};
class Whatever : public Middle<42> {}; 

或者,如果这些类中没有其他内容:

using Son1 = Middle<2>;
using Son2 = Middle<3>;
using Whatever = Middle<42>;

最新更新