【发布时间】:2018-02-06 20:52:40
【问题描述】:
在 C++ 中,有什么方法可以区分没有参数的构造函数和所有参数都具有默认值的构造函数?
像这样:
class Object {
public:
Object(int a = 0, int b = 0 ){
}
Object(){
}
};
此外,编译器无法确定应在以下代码示例中使用哪些构造函数:
Object obj; // which one, Object(int,int) or Object()
【问题讨论】:
-
不。具有所有 default 参数的构造函数是 default 构造函数。
-
如果两个参数都可以有默认值,这可能意味着您在两个 c'tors 中都有重复的行为。
-
即使编译成功,结合默认参数值重载方法也不是一个好主意...
-
你可能会觉得有趣的是看看这个来解决你的消歧问题isocpp.org/wiki/faq/ctors#named-ctor-idiom
-
听起来不粗鲁,但为什么两者都有,也就是说,为了你的程序,两者有什么区别,让你想试试这个?
标签: c++