【发布时间】:2015-08-28 13:37:19
【问题描述】:
今天看到一个我不熟悉的类的c++初始化。
CPrice price = CPrice();
初始化通常应该是这样的
CPrice price;
我会猜到第一个应该抛出错误或其他东西。
这里会发生什么?我猜该变量在堆栈上,因为它没有用 new 初始化。
我将 Visual Studio Express 2012 与 Microsoft C++ 编译器一起使用。这可能是微软编译器特定的东西,因此是允许的吗?
【问题讨论】:
-
我认为他们正在遵循某种风格指南。如果您在创建变量时有
=,则您知道它已被初始化。 -
为什么你认为这会产生错误?
CPrice()是一个构造函数,它返回一个分配给新声明的变量的对象... -
@tobi303 是用 = 赋值还是复制(“operator=”)?
-
这是一个初始化;这里没有作业。
-
@Bongo 不,实际上在变量声明的上下文中
=表示复制。CPrice price = CPrice();和CPrice price(CPrice());在定义上是相同的。欢迎来到 C++ 语法怪癖。
标签: c++ visual-studio visual-studio-2012