默认情况下如何让所有构造函数调用方法而不使用继承?

时间:2017-04-24 01:33:28

标签: c++ oop

例如,我希望MyClass的所有构造函数始终调用foo()。但正如您在下面看到的,我正在做的方式有代码重复。有没有更优雅的方法来做到这一点,没有MyClass从超类扩展?:

class MyClass{
  MyClass();
  MyClass(int);
  MyClass(int, int);
  private:
  void foo();
}

MyClass::MyClass(){
   foo(); //repetitive
}

MyClass::MyClass(int a){
  foo(); //repetitive
}

MyClass::MyClass(int a, int b){
  foo(); //repetitive
}

2 个答案:

答案 0 :(得分:0)

问题由aschepler回答。我可以使用delegating constructors

答案 1 :(得分:0)

如果您正在寻找一个简单的修复方法,为什么不定义一个包含方法foo的抽象类?,并且在默认的constrcutor中调用该方法foo(),现在您需要做的就是继承那个班。