为深拷贝散分!

anything_is_possible anything_is_possible 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include<iostream>
using namespace std;
class point
{
public:
point()
{
x=y=0;
cout<<"default constructor called."<<endl;
}
point(int xx,int yy)
{
x=xx;
y=yy;
cout<<"constructor called."<<endl;
}
~point()
{
cout<<"destructor called."<<endl;
}
int getx()
{
return x;
}
int gety()
{
return y;
}
void move(int j,int k)
{
x=j;
y=k;
}
private:
int x,y;
};
class arrayofpoints
{
public:
arrayofpoints(int n)
{
numberofpoints=n;points=new point[n];
}
arrayofpoints(arrayofpoints&pointsarray);
~arrayofpoints()
{
cout<<"deleting..."<<endl;
numberofpoints=0;
delete[] points;
}
point&element(int n)
{
return points[n];
}
private:
point *points;
int numberofpoints;
};
arrayofpoints:: arrayofpoints(arrayofpoints&pointsarray)
{
numberofpoints=pointsarray.numberofpoints;
points=new point[numberofpoints];
for(int i=0;i<numberofpoints;i++)
points[i].move(pointsarray.element(i).getx(),pointsarray.element(i).gety());
}
int main()
{
int number;
cout<<"please enter the number of points:";
cin>>number;
arrayofpoints pointsarray1(number);
pointsarray1.element(0).move(5,10);
pointsarray1.element(1).move(15,20);
arrayofpoints pointsarray2(pointsarray1);
cout<<"copy of pointsarray1:"<<endl;
cout<<"point_0 of array2:"
<<pointsarray2.element(0).getx()
<<","<<pointsarray2.element(0).gety()<<endl;
cout<<"point_1 of array2:"
<<pointsarray2.element(1).getx()
<<","<<pointsarray2.element(1).gety()<<endl;
pointsarray1.element(0).move(25,30);
pointsarray1.element(1).move(35,40);
cout<<"after the moving of pointsarray1:"<<endl;
cout<<"point_0 of array2"
<<pointsarray2.element(0).getx()
<<","<<pointsarray2.element(0).gety()<<endl;
cout<<"point_1 of array2:"
<<pointsarray2.element(1).getx()
<<","<<pointsarray2.element(1).gety()<<endl;
}
其中实现深拷贝那段有些看不懂,也就是
arrayofpoints:: arrayofpoints(arrayofpoints&pointsarray)
{
numberofpoints=pointsarray.numberofpoints;
points=new point[numberofpoints];
for(int i=0;i<numberofpoints;i++)
points[i].move(pointsarray.element(i).getx(),pointsarray.element
辛苦各位高手了!不要吝啬你们的文字!讲细点!
...全文

相关推荐

C++之深拷贝和浅拷贝

通过简短的代码和图片来说明C++中深拷贝和浅拷贝的区别和概念。

qhh0205

深拷贝.js(考虑最全的深拷贝函数)

js考虑最完善的深拷贝函数,可以深拷贝引用对象和基本对象

sannianerban12138

JavaScript 深拷贝 递归 手写

今天的学习笔记写在了自己的网页笔记本上,没有记录到博客,但是学到一个有关深拷贝的实现方法,为加深印象,这里给大家分享一下: 深拷贝:就是拷贝到最底层的属性。 function deepCopy(object){ //这里传入一个拷贝的对象 /*这里定义一个返回的新对象,也就是拷贝完成后的对象*/ let newObject = Array.isArray(object) ? []: {}; // 首先定义对象类型,如果传入的是数组,则定义一个空数组,如果是对象,则定义一个空对象 if(object && typeof(object) === 'object'){ //这里再次判断他

weixin_38741101

javascript中数组深拷贝途径及对象数组深拷贝

javascript中数组深拷贝途径及对象数组深拷贝 什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用“=”来直接把一个数组赋值给一个变量,如: var a=[1,2,3]; var b=a; console.log(b);  //输出的是1,2,3 a[2]=0; console.log(b);  //输出的是1,2,0 把数组a赋值给变量b,这种就是js数组的浅拷贝。这种赋值实际只是将数组a的地址给了数组b,它两指向同一块内存。   然而,正如上面代码所示,一旦对数组a做出修改,实际上会影响拷贝出来的其他数组,这并不是我们所想要的结果,因此就必须用到数组的

weixin_38651812

JavaScript 中对象的深拷贝

对象的深拷贝与浅拷贝的区别如下: 浅拷贝:仅仅复制对象的引用,而不是对象本身; 深拷贝:把复制的对象所引用的全部对象都复制一遍。 一. 浅拷贝的实现 浅拷贝的实现方法比较简单,只要使用是简单的复制语句即可。 1.1 方法一:简单的复制语句 /* ================ 浅拷贝 ================ */ function simpleClone(initalObj) {     var obj = {};     for ( var i in initalObj) {         obj[i] = initalObj[i];     }     return obj

weixin_38691703
评论 37
收藏 已收藏
分享
返回顶部
anything_is_possible
C++ 语言 65,214 成员 250,514 内容