定义多个构造函数时的默认构造函数行为

时间:2018-01-15 20:18:43

标签: c++ class-constructors

当使用参数定义另一个构造函数时,是否会自动调用默认构造函数,或者我必须使用以下内容对其进行范围调整:objectName()如下所示:

Class TextFileParse {
public:
    TextFileParse() = default;
    TextFileParse( wstring fileName ) : TextFileParse()
    {
        Load( fileName );
    }
};

如果我定义构造函数而不是默认值并初始化并调用其他方法,那么我必须对其进行范围调整吗?我正在使用代码库,同时执行这两个操作并且不确定每个代码是如何操作的(静态.lib,我只有要跟踪的标头)。谢谢

1 个答案:

答案 0 :(得分:2)

  
    

当使用参数定义另一个构造函数时,是否会自动调用默认构造函数?

  

不,他们不是。

  
    

如果我定义构造函数而不是默认值并初始化并调用其他方法,那么我必须对其进行范围化吗?

  

是的,如果您想使用另一个构造函数中的功能,则需要使用委托构造函数。

作为一般规则,没有构造函数自动调用其他构造函数。您需要使用委托构造函数(因为 C ++ 11 )或将公共逻辑移动到从多个构造函数调用的单独方法中。