inn*_*nti 7 c++ constructor explicit-constructor
比方说,我们有一流的X与定义的构造X(int value).
这在语义上是否相同?
X x = 42;
X x(42);
Run Code Online (Sandbox Code Playgroud)
我相信只有当我们将显式关键字添加到X的构造函数时才会出现差异.否则编译器会将表达式减少X x = 42;为X x(42);
如果我错了,请纠正我.
表格
X x = 42;
Run Code Online (Sandbox Code Playgroud)
要求构造函数是非显式的,并且存在可访问的复制构造函数.允许实现构造一个临时的并将其复制,但我知道没有实现.
从语义上讲,这两个操作对于规范中的语言是不同的,但编译后的有效结果在以下情况下是相同的:
X可以采用整数类型,参数类型不是非const l值引用X,其中一个组成型可转化为参数类型,并且其中所述参数再次不是非const -1-值参考explicit