【发布时间】:2015-12-16 14:06:05
【问题描述】:
据我了解,像这样在 c++ 中实例化一个整数是合法的:
int x = int(5);
作为一名 Java 程序员,我假设这行代码调用整数的构造函数,将“5”作为参数传递。我读到 int 不是一个类,因此没有构造函数。
那么,那行代码到底发生了什么,以这种方式初始化 int 和以这种方式初始化 int 的根本区别是什么:
int x = 5;
提前致谢!
【问题讨论】:
-
它会将
5转换为int。什么都不做。 -
int(5)是function cast expression。它不是特定于初始化的,实际上可以出现在任何允许表达式的地方。 -
@BoBTFish:不,强制转换是括号中的数据类型标识符,后跟表达式。
-
@PavelPájaHalbich C++ 不是 C。您可以通过在参数周围放置括号来进行强制转换。
-
作为一名 Java 程序员,我会假设 -- 也许这才是真正的问题。 C++ 不是 Java,因此假设 C++ 使用 Java 作为模型是如何工作的只会给你带来麻烦。
标签: c++ constructor initialization primitive