定义多个构造函数时的默认构造函数行为
Default constructor behavior when multiple constructors defined
当使用参数定义另一个构造函数时,是否会自动调用默认构造函数,或者我是否必须使用 : objectName() 来限定它的范围,如下所示:
Class TextFileParse {
public:
TextFileParse() = default;
TextFileParse( wstring fileName ) : TextFileParse()
{
Load( fileName );
}
};
如果我定义构造函数而不是默认构造函数并且它初始化并调用其他方法怎么办,那么我是否必须限定它的范围?我正在使用同时执行这两项操作的代码库,但不确定每个代码库的行为方式(静态 .lib,我只有 headers 可以跟踪)。谢谢
Are default constructors called automatically when another constructor is defined with parameters?
不,他们不是。
What if I define the constructor instead of the default and it initializes and calls other methods, do I have to scope to it then?
是的,如果您想使用另一个构造函数的功能,您需要使用委托构造函数。
一般来说,没有构造函数会自动调用其他构造函数。您需要使用委托构造函数(自 C++11 起)或将公共逻辑移动到从多个构造函数调用的单独方法中。
当使用参数定义另一个构造函数时,是否会自动调用默认构造函数,或者我是否必须使用 : objectName() 来限定它的范围,如下所示:
Class TextFileParse {
public:
TextFileParse() = default;
TextFileParse( wstring fileName ) : TextFileParse()
{
Load( fileName );
}
};
如果我定义构造函数而不是默认构造函数并且它初始化并调用其他方法怎么办,那么我是否必须限定它的范围?我正在使用同时执行这两项操作的代码库,但不确定每个代码库的行为方式(静态 .lib,我只有 headers 可以跟踪)。谢谢
Are default constructors called automatically when another constructor is defined with parameters?
不,他们不是。
What if I define the constructor instead of the default and it initializes and calls other methods, do I have to scope to it then?
是的,如果您想使用另一个构造函数的功能,您需要使用委托构造函数。
一般来说,没有构造函数会自动调用其他构造函数。您需要使用委托构造函数(自 C++11 起)或将公共逻辑移动到从多个构造函数调用的单独方法中。