【发布时间】:2013-04-16 02:24:21
【问题描述】:
复制构造函数、深拷贝、常量引用
问。在内存管理方面。
类 A 的复制构造函数的形式为 A(const A& a) 为什么参数是通过引用传递的? 解释为什么我们不能定义 A(A a) 形式的构造函数
回答。 我们这样做的三个原因:
- 将对象作为参数传递时的常量引用效率更高
- 如果我们在没有 const 修饰符的情况下传递 A(A a),则不应该更改的对象可能会被错误地更改
- 我们这样做是为了进行深度复制
这三个理由对吗?
请告诉我。 谢谢,
【问题讨论】:
-
嗯,这个怎么样:
MyClass obj(MyClass()); -
您的第二个原因,“
A(A a)没有 const 修饰符”:再看一遍。const修饰符并不是你唯一删除的东西。
标签: c++ memory-management constants copy-constructor deep-copy