【发布时间】:2014-10-07 20:39:59
【问题描述】:
我正在学习 Accelerated C++ 中的自动转换,作者指出,当您有表单的语句时,总是会调用复制构造函数
myClass myVar = 24;
另外,他说当你有表格的陈述时
myClass myVar;
myVar = 24;
实际发生的是调用以整数作为参数的 myClass 构造函数来创建类型为 myClass 的未命名临时变量,然后调用赋值运算符。我相信这本书写于 2000 年。我的问题是这些说法是否仍然正确。我在其他地方了解了移动构造函数和移动赋值操作,我想知道是否调用了它们而不是赋值运算符/复制构造函数。
感谢您的宝贵时间。对此,我真的非常感激。
【问题讨论】:
-
不看类定义是不可能的。
-
如果
myClass有一个移动构造函数和一个移动赋值运算符,那么它们将被使用 -
@MattMcNabb 我看到移动赋值运算符肯定可以发挥作用(第二个 sn-p),但我看不到移动-构造函数会出现在哪里要么 sn-p。你会在哪里看到它?对于 OP,作者在这些评估中的任何一个都不再必然准确。
-
@WhozCraig:首先,一个临时的
myClass(24)将用于复制/移动初始化myVar,除非复制/移动被省略。
标签: c++ copy-constructor accelerated-c++