【发布时间】:2013-06-17 12:17:50
【问题描述】:
是否可以编写一个使这些有效的类:
Foo a;
Foo b = 0;
Foo c = b;
Foo d(0);
Foo e(1);
Foo f = Foo(1);
但这些不是:
int x;
Foo a = x;
Foo b = 1;
Foo c = 2;
//etc
基本上,我的规则是“常量0 可以隐式转换为Foo,但没有其他值”
【问题讨论】:
-
Foo e(1);呢?这怎么有效? -
@LuchianGrigore:它们在语义上是否相同?如果是这样,我想我可以宣布无效。
-
也许您可以尝试使用带有
std::nullptr_t的构造函数(只是一个想法......) -
如果
x是const int x = 0;,你希望a的初始化成功吗?
标签: c++ constructor initializer explicit-constructor