如何实例化派生类而不必重写代码?

时间:2011-11-05 19:39:43

标签: c++ inheritance

假设我有一个:

class A {
    A(int i);
};

class B : A {
};

我不能实例化B(3),因为没有定义这个构造函数。有没有办法实现一个使用A构造函数的B对象,而不必在所有派生类中添加“普通”代码?感谢

感谢

3 个答案:

答案 0 :(得分:6)

C ++ 11有一种方法:

class A {
public:
    A(int i);
};

class B : A {
public:
    using A::A; // use A's constructors
};

答案 1 :(得分:2)

如果您正在使用C ++ 03,那么在您的情况下,这是我能想到的最好的事情:

class A {
public:
    A(int x) { ... }
};

class B : public A {
public:
    B(int x) : A(x) { ... }
}

您可能还想查看下面的链接,这是一个C#问题,但包含有关构造函数可以这样做的原因的更详细的答案:

C# - Making all derived classes call the base class constructor

答案 2 :(得分:2)

用户491704说 它应该是这样的

class mother {
public:
 mother (int a)
 {}
 };

class son : public mother {
public:
 son (int a) : mother (a)
 { }
   };

Here is a link for the Tutorial