【发布时间】:2011-10-29 07:43:09
【问题描述】:
Nicolai M. Josuttis 的 C++ 标准库指出:
两者之间存在细微差别
X x;
Y y(x) //explicit conversion
和
X x;
Y y = x; //implicit conversion
下面说:“前者通过从X类型的显式转换创建一个Y类型的新对象,而后者通过使用隐式转换创建一个Y类型的新对象。”
我猜我对显式转换和隐式转换的概念有点困惑。在这两种情况下,您都使用 X 并将其推入 Y 本身 - 一种使用 Y 的构造函数,而另一种使用赋值运算符。
在这两种情况下如何处理转换有什么区别,是什么使它显式/隐式,以及这与使用“显式”关键字定义的类构造函数(如果有的话)有什么关系?
【问题讨论】:
-
请注意,这两种情况都只是调用构造函数,在这种情况下,“=”不是赋值运算符,它是声明语法的一部分
-
这不应该被关闭。他犯了一个错误 - 但它不是关于差异,而是关于隐式与显式。
标签: c++ type-conversion