|
|
1
33
对。一旦你明确声明 绝对任何 类的构造函数,编译器停止提供隐式默认构造函数。如果仍然需要默认的构造函数,则必须自己显式声明和定义它。 P.S.可以编写一个复制构造函数(或转换构造函数,或任何其他构造函数),也可以 违约 构造函数。如果您的新构造函数属于该类别,则不再需要提供其他默认构造函数:) 例如:
在上面的示例中,复制构造函数同时是默认的构造函数。 |
|
|
2
3
你不必定义两者。但是,一旦为一个类定义了任何构造函数,所有默认的构造函数都将不可用。因此-如果您希望既复制构造又不复制构造,则还需要定义一个非默认(即显式)默认(即无参数)构造函数。 如果定义了一个复制构造函数,通常也应该重写赋值运算符。 |
|
|
3
1
正如Andreyt所说,如果显式声明任何构造函数,包括复制构造函数,编译器将不会隐式声明或定义默认构造函数。 这并不总是个问题。
如果不希望类是默认可构造的,那么最好不要声明默认构造函数。但如果希望它是默认可构造的(例如,如果要取消对
还要注意,默认的构造函数是任何可以不带参数调用的构造函数,而不仅仅是一个不带参数的构造函数。
|
|
|
4
0
1)没有参数的构造函数称为“默认构造函数”。 2)如果用户没有提供以下任何构造函数,则编译器声明 您的默认构造函数。
3)如果编译器声明了“默认构造函数”,则称为“隐式声明的默认构造函数”, 4)“隐式声明的默认构造函数”有两种类型
5)当存在 5a)无参考变量 5b)无虚拟功能 5C)没有虚拟基类。 5d)父类具有“平凡”构造函数,
希望这有帮助。 |
|
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
|
|
nick2225 · 隐式调用复制构造函数? 4 年前 |
|
|
nohaga · 为什么在本例中p3需要默认构造函数? 4 年前 |
|
|
Aadil Hoda · 为什么类类型的成员需要初始化? 4 年前 |
|
|
EloiGG · 具有任意类型的变量的可数的C++函数 4 年前 |