【发布时间】:2016-02-08 20:07:15
【问题描述】:
用户定义的默认构造函数有什么区别
class Simple
{
public:
Simple() {}
};
和一个用户定义的构造函数,它接受多个参数,但每个参数都有默认值
class WithDefaults
{
public:
WithDefaults(int i = 1) {}
};
除此之外,WithDefaults 还可以使用 i 的显式值构造?
具体来说,我想知道,就语言而言,这两个构造函数是否为两者使用完全相同的默认构造函数,或者类的属性之间是否存在细微差别?
换句话说,一个所有参数都有默认值的构造函数在各个方面都是默认构造函数吗?
【问题讨论】:
-
实际上,我原以为这是重复的,但我在任何地方都找不到答案。
-
我想这几乎在Default parameters with C++ constructors 中得到了回答,但我不确定。
-
单独来看,我认为这些类是相同的。当考虑到转化时,他们可以采取不同的行动。 @MicorVirus 的第二条评论中的链接进一步解释了这一点。
-
真棒的问题!我不提供这个作为明确的答案,但根据我的经验,它们总是相同的。
-
是的,我不关心
explicit这个问题,但需要小心。
标签: c++ constructor language-lawyer default-constructor