拷贝构造函数有什么作用

wangtong408 2003-11-28 10:16:45
小弟刚学c++,碰上了一个问题.拷贝构造函数有什么作用?如何使用它.
请诸位高人多多帮忙.
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqyangcsu 2003-11-28
  • 打赏
  • 举报
回复
拷贝构造函数用处在于对象A中含有指针或是引用抑或是new等,在拷贝给对象B时将会发生如下灾难性的后果:此时A和B具有对同一段内存的引用或是指针,当A和B之一任意删除时,另外一个对象将会引用或是指向一个不可预料的存储区域。
wangtong408 2003-11-28
  • 打赏
  • 举报
回复
明白了,狼兄讲的比think in c++清楚多了.
zhouqingyuan 2003-11-28
  • 打赏
  • 举报
回复
作用就是如下
A a;
A b=a;//这个时候就会调用拷贝构造函数。而使用也就这样了,
inline 2003-11-28
  • 打赏
  • 举报
回复
克隆技术你懂吗?一个道理!
用一个已经存在的本类的对象创建本类新的对象!
不过你可以把拷贝构造函数定义成克隆已经存在对象的全部或一部分!
为的是在程序运行中拷贝创建一个变化着的对象!这个对象在程序运行之前往往不可预测!
有时也为了取得对象一个拷贝进行操作以不至于破坏该对象!同样也加强了程序的可读性!
拷贝构造函数在下列情况下被调用:
1.用已经存在的对象初始化新对象
2.对象作函数参数时实参与形参结合时
3。用返回对象的函数为对象赋值时。
winco 2003-11-28
  • 打赏
  • 举报
回复
拷贝构造函数就是一种把一个对象的值赋给另外一个对象的一种简便方法。或者说是用意个对象初始化另外一个对象的方法
winco 2003-11-28
  • 打赏
  • 举报
回复
举个例子吧
class Point
{
public:
Point(double _x=0., double _y=0., double _z=0.) : x(_x), y(_y), z(_z){}
Point(const Point& p);

private:
double x, y, z;
};

Point::Point(const Point& p)
{
x=p.x;
y=p.y;
z=p.z;
}

void main()
{
Point p1(3,5);
Point p2(p1);//这里,调用拷贝构造函数,把p1的值赋给p2;
}

64,654

社区成员

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

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