c++ - 使用 "X x(42)"和 "X x = 42"的对象构造有何不同?

标签 c++ constructor explicit-constructor

假设我们有类 X 和已定义的构造函数 X(int value)

这在语义上是否等价?

X x = 42;
X x(42);

我相信只有在 X 的构造函数中添加 explicit 关键字才会出现差异。 否则编译器会将表达式 X x = 42; 简化为 X x(42);

如果我错了,请纠正我。

最佳答案

表格

X x = 42;

要求构造函数是非显式的,并且有一个可访问的复制构造函数。允许该实现构造一个临时文件并将其复制过来,但据我所知,没有任何实现会这样做。

关于c++ - 使用 "X x(42)"和 "X x = 42"的对象构造有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777684/

相关文章:

c++ - 使用C++确定三个数中最大的数

php multi exec 很慢(19 分钟?)

c# - 存在较新版本的先决条件时无法安装

java - 如何从派生类访问内部类构造函数?

c++ - STL typedef 的可移植性如何?

运行程序时出现java.lang.NullPointerException

c++ - 成员取得参数的所有权

c++ - 防止在构造函数中进行不希望的转换

c++ - 在 C++ 中放置新的 VS 显式构造函数调用

C++ 使用 cppcheck 建议的显式