拷贝构造函数的使用场合是什么??

cpbuaa 2005-11-22 02:45:20
rt
请用程序说明,万分感谢!
...全文
393 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nyingchi 2005-11-22
  • 打赏
  • 举报
回复
同意楼上的

拷贝构造函数包括 浅拷贝 和深拷贝

两个对象都拥有同一个资源 就是 浅拷贝
深拷贝是指,当对一个对象创建时候,分配了资源,那么进行拷贝的时候, 不但要复制对象的空间,还需要复制对象的资源(heap空间)
iGray 2005-11-22
  • 打赏
  • 举报
回复
拷贝构造函数:1.在声明一个对象的同时,用另一个对象将其初始化时
class A{};
A b;
A a = b; //拷贝构造,与下面的情形完全相同。因为是在定义时赋值。
A a(b);

2.单参数构造函数,如果没有explicit,可用于隐式类型转换。
class B{
B(A& a);
};
foo(B b){}; //函数foo定义
class a;
foo(a); //函数调用,拷贝构造用于隐式转换
dragonzxh 2005-11-22
  • 打赏
  • 举报
回复
在用一个类对象初始化该类的另一个对象时使用...

moany 2005-11-22
  • 打赏
  • 举报
回复
拷贝构造函数和赋值不一样,建议看看《深度探索C++对象模型》

有三种情况,会以一个object的内容作为另一个object的初值,即调用到拷贝构造函数:
class X {...};
X x;
1、明确的以一个object的内容作为另一object的初值
X xx=x;
2、但object被当作参数交给某个函数时
extern void foo(X x);

void bar()
{
X xx;
foo(xx);
}
3、以及当函数传回一个object时
X foo_bar()
{
X xx;
...
return xx;
}
cdo 2005-11-22
  • 打赏
  • 举报
回复
个人感觉和附值没多大不同。
csucdl 2005-11-22
  • 打赏
  • 举报
回复
class classname
{};
void Foo(classname instance4)
{}

classname instance1; //默认构造函数
classname instance2 = instance1;//拷贝构造函数
classname instance3(instance1); //拷贝构造函数
Foo(instance1); //拷贝构造函数
yuanchuang 2005-11-22
  • 打赏
  • 举报
回复
如定义了一个类为MyClass;
定义的对象实例的时候
MyClass AClass(AnotherClass)
或MyClass AClass = MyClass(AnotherClass)
cunsh 2005-11-22
  • 打赏
  • 举报
回复
函数的参数传递时.
void func(A a); //调用func的时候.参数a的初始化就调用了拷贝构造函数呀.

楼长要记得给我分呀~
2004csharp 2005-11-22
  • 打赏
  • 举报
回复
涉及到资源如堆、输入输出设备等时,需要深拷贝
oyljerry 2005-11-22
  • 打赏
  • 举报
回复
拷贝构造函数里面要自己实现深拷贝

65,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧