如果没有传入参数,是否有可能让1个构造函数可以选择默认构造函数。
示例,而不是有2个构造函数,其中1是默认构造函数,而另一个是初始化传入的数字的构造函数,是否可能只有1个构造函数,如果传入一个值,则将该值设置为成员function,如果没有传入值,则将成员函数设置为数字。
示例:
WEIGHT.H文件:
class Weight
{
public:
Weight() { size = 0; }
Weight(int a) : size(a) {}
int size;
};
MAIN.CPP文件:
int main(void)
{
Weight w1;
Weight w2(100);
}
我一直在研究不同的学校项目,他们都需要有不同类型的构造函数,我想知道是否有一种方法只能拥有它,这样可以节省时间。 谢谢您的帮助。
答案 0 :(得分:3)
是的,构造函数参数可能有一个默认参数,就像其他函数一样。如果构造函数的所有参数都具有默认参数,则构造函数也是默认构造函数。所以,例如,
class Weight
{
public:
explicit Weight(int a = 0) : size(a) { }
int size;
};
可以使用单个参数或不带参数调用此构造函数;如果在没有参数的情况下调用它,0
将用作a
参数的参数。
请注意,我还声明了此构造函数explicit
。如果您有一个可以使用单个参数调用的构造函数,则应始终声明它explicit
以防止发生不需要的隐式转换,除非您确实希望构造函数成为转换构造函数。
(如果您还不熟悉转换构造函数或隐式转换,那没关系;只要遵循此规则就足以满足您编写的大部分代码。)
答案 1 :(得分:-1)
是的,James的建议是可能的,但是如果你没有提供任何构造函数定义,如果你没有定义Default构造函数,编译器将接管定义部分。 这不是一个问题,但更好的做法是定义Default构造函数以正确初始化值。