如何在C ++中的另一个类中声明一个类的构造函数

时间:2018-02-27 23:39:47

标签: c++ class inheritance

例如:

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

class B
{
    A::A()
    {
        a = 1;
    }
};

2 个答案:

答案 0 :(得分:0)

回答这个问题的最好方法就是一句话:不要。在您的示例中,AB之间没有关系,因此您甚至没有理由尝试在另一个类中定义构造函数。您希望在A中提及B的构造函数的唯一原因是B是否来自A。您希望将A的部分保留为A,而不是将它们分成其他类,并使其成为可读性和维护的噩梦。简短版本是您应该将A的所有部分保留为A,因此请勿尝试将它们放在其他位置。

答案 1 :(得分:0)

不,你不能。

引自标准[class.mfct] paragraph 1(强调我的):

  

成员函数可以在其类定义中定义,在这种情况下,它是内联成员函数,或者如果已经声明但未在其类定义中定义,则可以在其类定义之外定义它。 出现在类定义之外的成员函数定义应出现在包含类定义的命名空间范围内。

在您的示例中,定义出现在类范围中,这与此规则相矛盾。