为了账号安全,请及时绑定邮箱和手机立即绑定

这个时候Line 类的拷贝构造函数怎么写

这时候的Line拷贝构造函数该怎么写,不会造成浅拷贝

正在回答

2 回答

代码实现是可以的呀,为什么听这门课程的时候老师说,成员对象没有默认的构造函数,就必须的初始化列表中为成员对象初始化。

我的Line类构造函数和拷贝构造函数

Line::Line(int x1,int y1,int x2,int y2)
{
    Point_A =new Point(x1,y1);
    Point_B =new Point(x2,y2);
    cout<<"Construction Line(int x1,int y1,int x2,int y2)"<<endl;
}

Line::Line(const Line& L)
{   
     Point_A =new Point(L.Point_A->getX(),L.Point_A->getY());
     Point_B =new Point(L.Point_B->getX(),L.Point_B->getY());

     cout<<"Line(const Line& L)"<<endl;
}

0 回复 有任何疑惑可以回复我~
#1

不想取名字哟

Line中数据成员类型是类的对象的指针,仅仅是个指针,指针创建时并没有指向或者分配内存,只有在构造该对象的时候才分配内存。 对象的解释 广义:在内存上一段有意义的区域,称作为一个对象。
2017-08-21 回复 有任何疑惑可以回复我~
Line(const Line&lhs)
	{
		a=new Coor();
		b=new Coor();
		*a=*(lhs.a);
		*b=*(lhs.b);
	}

Line拷贝构造函数自己先申请一个堆内存既是所指向地址不同就好了

0 回复 有任何疑惑可以回复我~
#1

慕粉2232547490 提问者

嗯,如果Coordinate这个类有默认的构造函数这样做确实可以,但是如果坐标点这个类没有默认的构造函数,这样的话线段这个类的构造函数必须在初始化列表中给点初始化,好像就做不到了
2017-05-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

这个时候Line 类的拷贝构造函数怎么写

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信