2

我们可以为 C++ 中的默认构造函数提供一个主体吗?

谢谢。

4

4 回答 4

11

是的,当然可以。任何不需要参数的构造函数都是默认构造函数。

于 2011-02-08T20:13:35.263 回答
1

是的,默认构造函数(即没有任何参数的构造函数)可以像任何其他构造函数一样具有主体。这是放置“默认”初始化代码的好地方。将成员变量设置为合理的值。也许将指针设置为 null 或分配组件对象。

也许“默认”这个词是造成混淆的原因?在没有任何特定参数的情况下调用它是默认值,如果没有定义,则不一定是默认值。

于 2011-02-08T20:17:38.543 回答
1

不需要显式指定默认构造函数。但是,最好继续明确地实现一个,这样您就不会依赖默认行为来成为您真正想要的。

如果你确实实现了一个公共默认构造函数,它肯定应该有一个主体,即使它是空的。

在某些情况下,可以有一个受保护的或私有的 ctor。如果 ctor 是私有的(称为隐藏构造函数) ctor 是私有的,那么如果它没有函数体也没关系,因为它永远不能被调用。

于 2011-02-08T21:21:03.917 回答
0

构造函数用于初始化类的成员。所以,当然任何构造函数都可以有一个主体。通过为自己提供一个构造函数,你只是在使用默认构造函数。

class foo
{
    int x ;
    public:
       foo()  // default constructor
       {
           x=10;  // How ever you can achieve this with initializer lists too.
       }
};
于 2011-02-08T20:16:14.973 回答