为什么在调用复制构造函数之前调用构造函数
Why Constructor is called before the copy-constructor is called?
我正在学习类构造函数。
正如你在这个网站上看到的:http://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm
在站点中的第一个示例代码上,
Normal constructor allocating ptr
Copy constructor allocating ptr.
Length of line : 10
Freeing memory!
Freeing memory!
我很难理解为什么复制构造函数是在普通构造函数之后调用的。
我认为没有理由调用复制构造函数。以下两个代码行不同吗?
Line line(10); or
Line line = Line(10);
或者函数"display"调用复制构造函数?
display(line);
其中显示函数将线对象的副本作为其参数。如果您将显示功能的定义更改为
void display(Line& obj);
将避免复制构造函数。
是的,这两行不同。
Line line(10);
创建line
,将10
传递给构造函数。
CCD_ 4首先执行CCD_ 5,该CCD_;然后它通过将该临时对象传递给复制构造函数来创建CCD_ 7。然后将销毁临时对象。
临时对象应该被优化掉(这被称为复制省略)。有些编译器在调试模式下不执行复制省略,或者如果您传递开关以禁用复制省略。
相关文章:
- 在c++中使用向量时,如何调用构造函数和析构函数
- C++:考虑但不调用构造函数的特殊性
- 对象实例化调用构造函数的次数太多
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- C ++:通过大括号调用构造函数?
- 不能调用构造函数
- 赋值 boost::intrusive_ptr 而不调用构造函数?
- 在模板化类的构造函数中调用构造函数
- 如何为 std::vector 分配内存,然后稍后为某些元素调用构造函数?
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 静态 std::map instatiation 在类的方法中调用构造函数吗?
- 有没有一种简单的方法可以在对象向量上调用构造函数?
- 我不明白在这个例子中什么时候调用构造函数
- 调用c++构造函数的不同方法
- 调用构造函数与将内联常量定义为默认参数
- 如何通过 Rust FFI 调用C++构造函数?
- "new"运算符是否总是调用构造函数?
- 无法调用构造函数
- 使用 "()" 调用构造函数不同于"{}"
- 确定是调用构造函数还是强制转换运算符的因素