【发布时间】:2020-10-15 08:38:21
【问题描述】:
我有一个用户定义的类 Fixed,有一个默认构造函数、一个参数构造函数和一个赋值运算符。
当我声明一个对象然后分配它时:
Fixed a;
a = Fixed( param );
我明白了:
- 调用默认构造函数(第 1 行)
- 调用参数构造函数(第 2 行)
- 调用赋值运算符(第 2 行)
- 调用析构函数(第 2 行)
当然,我可以(并且应该)更喜欢初始化(Fixed a(param))而不是赋值。
然而,我试图了解第 2 行发生了什么。
是否创建了临时对象?
这是我发现的关于临时对象的内容。
在某些情况下,编译器需要创建临时 对象。可以为以下创建这些临时对象 原因: ...
存储返回用户定义的函数的返回值 类型。 仅当您的程序没有创建这些临时对象时 将返回值复制到对象。
这里程序确实复制了对象的返回值,那怎么会创建一个临时对象呢?
【问题讨论】:
标签: c++