继承构造函数:从C#转换为C ++

时间:2011-10-05 17:20:16

标签: c# c++ inheritance constructor

我来自C#背景,我会写一个类和构造函数:

public class Grunt : GameObject
{
    public Grunt()
        : base()
    {
         // do stuff
    }
}

如何在C ++中编写构造函数继承?在标题和源中。我知道你没有'base'关键字可以使用,但其他语法是一样的吗?

4 个答案:

答案 0 :(得分:6)

class Grunt : public GameObject
{
    Grunt()
        : GameObject()  // Since there are no parameters to the base, this line is actually optional.
    {
         // do stuff
    }
}

并强烈考虑在The Definitive C++ Book Guide and List

获取一本优秀的C ++书籍

答案 1 :(得分:5)

是的,将: base()替换为: GameObject()

但是,如果没有参数,那么隐含的呼叫就像C#

中那样

答案 2 :(得分:3)

您使用基类的名称代替' base'关键词。这是必要的,因为C ++中有多重继承的可能性。如果有多个基类,则可以通过逗号分隔调用来调用多个基本构造函数。

答案 3 :(得分:1)

标题:

template <int unique>
class base { 
public: 
    base();
    base(int param);
};

class derived: public base<1>, public base<2> {
public:
    derived();
    derived(int param);
};

源:

base::base() 
{}

base::base(int param) 
{}

derived::derived() 
: base<1>()
, base<2>() 
{}

derived::derived(int param) 
: base<1>(param)
, base<2>(param) 
{}

这阐明了如何从多个类继承,继承模板类,构造基类,演示如何将参数传递给基础构造函数,以及显示为什么我们必须使用基类的名称。