【发布时间】:2013-12-08 13:51:47
【问题描述】:
这样做有什么区别:
class_name object_name = something;
和
class_name object_name(something);
根据我阅读的here,两者都使用复制构造函数,但我不明白为什么会发生这种情况以及隐式转换如何发挥作用。我如何理解它(在阅读它之前)是第一个通过创建临时对象使用默认赋值运算符(如果未定义)然后调用复制构造函数,但这似乎是错误的。我之所以问是因为我读到,当显式复制构造函数时,第一个选项将失败,即使某些东西是 class_name 类型,所以这两个选项必须足够不同。也是在第一个选项的复制构造函数之上使用赋值运算符(使用默认或用户定义的实现)还是只是调用复制构造函数的用户友好语法形式?
【问题讨论】:
-
这取决于
something是什么。请参阅此gotw。但两者都不涉及对赋值运算符的调用。
标签: c++ copy-constructor copy-assignment copy-initialization