假设我们有定义构造函数X(int value)
的类X.
这在语义上是否相同?
X x = 42;
X x(42);
我相信只有当我们将显式关键字添加到X的构造函数时才会出现差异。
否则,编译器会将表达式X x = 42;
减少为X x(42);
如果我错了,请纠正我。
答案 0 :(得分:7)
表格
X x = 42;
要求构造函数是非显式的,并且存在可访问的复制构造函数。允许实现构造一个临时的并将其复制,但我知道没有实现。
答案 1 :(得分:5)
从语义上讲,这两个操作对于规范中的语言是不同的,但编译后的有效结果在以下情况下是相同的:
X
有一个参数构造函数可以采用整数类型,参数类型不是非常量l值引用X
有一个参数构造函数,其中一个整数类型可以转换为参数类型,并且参数也不是非常量l值引用explicit