| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 817 人关注过本帖
标题:[转帖]拷贝构造函数
只看楼主 加入收藏
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:4 
[转帖]拷贝构造函数

拷贝构造函数就是当你的的类的数据成员中存在指针成员的时候,就要自己定义它,因为编译器往往采用位拷贝,也就是一个内存块一位一位的复制过去,这样就造成多个对象的指针成员都指向同一块内存区域,恰恰危险就出在这里,每个对象都认为自己独占这块内存,因此当一个对象销毁时,如果它把这块内存一同delete的话,那么其他对象的指针成员就会造成访问违规。不过如果你的数据成员中没有指针的话,你也就没有必要进行定义,因为编译器知道如何去进行优化,一旦你定义了,编译器就只能进行函数的调用了,无法优化。下面是一个类维护申请动态二维数组的例子:

class Copy { private: int** element; int m; int n; public: Copy(int,int); //普通构造函数 Copy(const Copy&); //拷贝构造函数 };

Copy::Copy(int m,int n) { int** element=new int*[m]; //申请第一维空间,即指针数组 for(int i=0;i<m;+i) element[i]=new int[n]; //申请第二维空间,即每一个指针都分配一个数组空间 m=m; n=n; }

Copy::Copy(const Copy& reset) { for(int i=0;i<m;++i) delete[] element[i]; //删除原来申请的空间指针变量 delete[] element;

m=reset.m; n=reset.n;

element=new int*[reset.m]; //重新申请一片空间创建动态二维指针 for(int j=0;j<m;++j) element[j]=new int[reset.n];

///// then copy elements...... }

搜索更多相关主题的帖子: 函数 构造 转帖 拷贝 
2005-05-15 01:58
指向指针的指针
Rank: 1
等 级:新手上路
帖 子:339
专家分:0
注 册:2004-8-8
收藏
得分:0 

/sign.png" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sign.png');}" onmousewheel="return imgzoom(this);" alt="" />
2005-05-18 13:00
version
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-5-19
收藏
得分:0 
   好好 学习 学习

2005-05-19 16:21
终南山下
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-5-20
收藏
得分:0 
int** element
这是什么意思啊?怎么两个*啊?没见过。
呵呵,本人是个初学者。。。
2005-05-20 09:07
hu_sir
Rank: 1
等 级:新手上路
帖 子:208
专家分:0
注 册:2004-4-29
收藏
得分:0 
以下是引用终南山下在2005-5-20 9:07:55的发言: int** element 这是什么意思啊?怎么两个*啊?没见过。 呵呵,本人是个初学者。。。
指向指针的指针!
2005-05-20 14:25
快速回复:[转帖]拷贝构造函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019689 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved