说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

散分,来拿把

编辑:说三道四文库 发布时间:2017-10-20 02:40
HTML文档下载 WORD文档下载 PDF文档下载
#include"iostream.h"
#include"string.h"
  
 class  person
{
protected:
char *name;
public:
person(char*k);
person(const person& k);
~person();
static int num;
};
int person::num=0;
person::person(char*k)
{
num++;
  name=new char[strlen(k)+1];
  strcpy(name,k);
}
person::person(const person &k)
{
num++;
name=new char[strlen(k.name)+1];
strcpy(name,k.name);
}
person::~person()
{
num--;
delete [] name;

 
void main()
{
  cout<<person::num<<endl;
person john("john");
cout<<person::num<<endl;
person yang(john);
cout<<person::num<<endl;
person k("k");
k=john; //这里出错,难道只有重载=才能搞定吗?有没有别的办法?
 

}
关注
重载运算符
你说的这里出错是什么错呢?
虽然你没重载=操作符,但编译器有啊。这个赋值操作没错,但是会有潜在的错误隐患,即使多个指针同时指向同一内存块。记住,数据成员中有指针,构造函数中也用了new分配了一块内存,地址赋给这个指针的话,那么必须显式的给出拷贝构造函数、西够函数、重载赋值操作赋。析够函数应该包含有delete的语句。这些均为能进行正确的拷贝既深拷贝。
好像是拷贝构造函数的问题
不是k=john这句话错了,是在析构k的时候发生错误。
所以只要你写了k=john这句话,编译器就肯定要调用Operator=().
在“=“时调用默认的构造函数,name没有释放原空间,又分配空间,造成错误,解决的办法可以增加一个判定条件,如if(name!=NULL)(事先要初始化name=NULL)释放原空间,在进行重新分配空间。
to dfh716(突袭): 
"在“=“时调用默认的构造函数" ,这句有点问题。要调用也是调用(默认)拷贝构造函数,但这是指在初始化的时候。对于这个程序,调用的是默认的=操作符。
来拿分了
只管接分,别的就不管了。
我接
谢楼主
:)
晕,我重载可以,我也是怎么做的,但是有没有好的办法?
编译器可以为类自动生成copy constructor

但是只有在类创建时才会调用,一般(没有多态,成员变量没有显式copy constructor等)会导致一个bitcopy操作产生。

所以你必须重载operator=

而且你这段程序也有问题,会导致内存泄漏,因为在你operator=

之后,应当delete name;
要重载运算符。
要重载运算符。拿分
……
拿分
up
guanzhu
:D
:():
乐乐,你来找我要分吗?
哈哈
楼上的朋友解释的很清楚了。
收到,接分
收分,谢谢了.
当然要重载operator=了
coming 
拿分
只有重载!
成员变量中有指针时,一定要注意该问题!
谢谢
up
3x
ok
拿分
谢谢!
谢谢
接分了
ok
Thanks.
?????
ganggangkaishi???
关注ing!
up
我c++学得不好,应该重载operator=吧
楼主langzi8818 (涂春银) ,你怎么把程序删了?帮你贴一下:

#include"iostream.h"
#include"string.h"
  
 class  person
{
protected:
char *name;
public:
person(char*k);
person(const person& k);
~person();
static int num;
};
int person::num=0;
person::person(char*k)
{
num++;
  name=new char[strlen(k)+1];
  strcpy(name,k);
}
person::person(const person &k)
{
num++;
name=new char[strlen(k.name)+1];
strcpy(name,k.name);
}
person::~person()
{
num--;
delete [] name;

 
void main()
{
  cout<<person::num<<endl;
person john("john");
cout<<person::num<<endl;
person yang(john);
cout<<person::num<<endl;
person k("k");
k=john; //这里出错,难道只有重载=才能搞定吗?有没有别的办法?
 

}

在BC31下编译能过,运行有时会有问题(一开始出现“Null pointer assignment"报错,后来改了一通,改不回来了就重新把原来你的程序拷回去运行却没有错误了:),所以说“有时”),总之是有问题了。

k=john;这句赋值是不会错的,问题出在析构的时候。查了一下钱能C++教材,在14.6节讲浅拷贝和深拷贝的地方的例子ch14_3.cpp,应该和你这个有点像,但是你是有自定义拷贝构造函数的。他例子的目的就是要说明自定义拷贝构造函数的必要。不知你有没有试过,去掉自定义拷贝构造函数,而用默认的就能通过了,不知道默认的是怎么做的。

我跟踪了一下,发现做到k=john;时并没有去调用自定义拷贝构造函数,可能问题就是出在这里了,深拷贝变成了浅拷贝,析构时遇到NULL指针,报错。但有时却不报错,也奇怪。

到VC6里试了一下,编译连接能过,运行后在console里显示了0 1 2后弹出一个Debug错误“Debug Assertion Failed!”还有一些相关信息。VC可以发现这个错误。

说了一大堆,还是没有说清。搞清楚了发个消息给我,学习学习,谢了。
谢谢
接分了
谢谢
版主呢
谢谢~~~
楼主,该解贴了吧^_^
谢谢了!
祝你成功!!
什么是JQuery-JQuery API jQuery入门指南-JQuery API jQuery的核心部分-JQuery API $(elements)-JQuery API $(expr, context)-JQuery API $(fn) -JQuery API $(html) -JQuery API $.extend(prop) -JQuery API $.noConflict() -JQuery API each(fn)-JQuery API eq(pos)-JQuery API get(num)-JQuery API get()-JQuery API gt(pos)-JQuery API index(subject)-JQuery API length-JQuery API lt(pos)-JQuery API size()-JQuery API CSS-JQuery API css(key, value)-JQuery API css(name)-JQuery API css(properties)-JQuery API height(val) -JQuery API height()-JQuery API width(val)-JQuery API width()-JQuery API DOM-JQuery API addClass(class)-JQuery API attr(key,fn)-JQuery API attr(key, value) -JQuery API attr(name)-JQuery API 2003高考试题 设置访问表命令:“access-list 2 permit 10.0.0.0 0.0.0.255”中10.0.0.0 和 0.0.0.255分别指什么? 请问谁知道这是什么缘故啊? 如何计算cpu和memory的一般的使用上限 在delphi中使用什么报表控件打印的报表效果较好 谁知道db或dbf头文件的格式? 急急 NMFtp中我想从ftp服务器下载指定文件扩展名的文件,该怎么办? 初始化页面的时候,如何使TextMode="Password"的asp:textbox有默认值显示? IBM软件清库存(大优惠) 又是可恶的乱码问题 struts与数据库!在线等待! 如何开发asp.net程序(基于vb) vc++的链接错误 如何用程序动态的获得activex控件的方法属性事件信息 请教:使用web.xml做资源约束时如何由自己的程序来做用户验证 请问:怎样编程来来虚拟网卡? 急!创建LOOKUP的问题 如何计算cpu和memory的一般的使用上限 新问题请教! 老问题:从Excel文件里把数据导入导数据库中 有汇编玩的非常牛的人吗??? 字符串操作的简单问题 学习J2EE需要装什么软件? >>有关记录的问题??<< 请高手指教:出现“ORA12663:服务器未提供客户机要求的服务”问题,怎么解决? 大侠救我! 动态sql问题请教,谢谢 填充combobox的问题 windowsxp不能创建拨号连接 怎樣轉換時間格式 ACCESS问题 Linux下上网问题?在线等待!急!急!急! 终极讨论:从Excel文件里面导入数据 winsock的问题 关于WINDOWS下邮件程序编写问题 Solaris下的Makefile问题 在lan里面的两台主机之间怎么配ppp连接,没有modem 我的SQL数据库安装的是实例,好象有问题哦! 高分求票据、合同套打代码! 事务问题,请大家帮忙,在线等待,50分相送!!!! xml解析的问题? 关于CRuntimeClass,请指教。 100分求解(在线等待) 终极讨论:从Excel文件里面导入数据 CString怎样转换为char * 类型? 有关爱情与事业的讨论! replace(replace(replace(replace(str,"<","&lt;"),">","&gt;"),chr(13),"<br>")," ","&nbsp;")是什么意思? 非常简单的问题!!! 看看这个portal做的怎么样? 如何去掉word中的页码 兄弟们,帮忙推荐一本powerDesigner的中文书籍,电子书籍也可以,在线等待!thanks! 我英语不是非常好 想考本科但是要过英语a及 求方法如题 人寒冷的感觉是怎样造成的? doing是什么意思 suggestion怎么用 怎样才能给人一种冰冷的感觉 已知a,b为非零向量,函数f(x)=(xa+b)(a-xb),则使f(x)的图像为关于y轴对称的抛物线的一个必要不充分条件是A.a⊥bB.a平行bC.|a|=|b|D.a=b 已知二次函数 f(x),f(1)=4,f(2)=7,f(-1)=10.求这个二次函数的解析式 英语翻译Poligono Industrial Baix Ebre H STREET PLOT 79/80 形容一个人出门便要打扮漂亮,而家中乱得如垃圾堆一般的词语 English is widely used _____ travellers and business people all over the world.A.to B.as C.by D.for 请翻译, 如图,四边形ABCD中,AD平行BC,点E在CD的延长线上,连接DE,交AB于点F,连接DB,∠AFD=∠DBE,且DE方=BE乘CE,(1)求证:∠DBE=∠CDE,(2)当BD平分∠ABC时,求证:四边形ABCD是菱形. 爱因斯坦的最大失误怎么样 养怡之福可得永年的永年是什么意思? 英语翻译llacer ramirez lerardo laguia numero 49 alzira 46600西班牙巴伦西亚的一个地址。请注明那个是街道什么的 最好能翻译成中文的地址 仲永从幼年的天资过人却落得个“泯然众人”的结局,这个故事给了你哪些启发呢?请你从不同角度思考.(1)从仲永的经历来看(2)从仲永父亲的行为对仲永的影响来看 若偶函数f(x)的定义域为【-1,1】,且在【0,1】上单调递减,若f(1-m) 英语翻译CALLE MARIA DE GUZMANNUM 58 Piso BJ 28003 MADRID 罗氏沼虾名字的由来 中华苏维埃第一次全国代表大会和全国第一次代表大会有什么不同?中国苏维埃第一次全国代表大会与全国第一次代表大会有什么不同(就是1921年的那一次)? 英语翻译街道:Avda,fuenlaburad65 地区:leganes Madrid Espana 韶山冲的读音“韶山冲”的“韶”怎么读?急用! 阴菜是什么菜 喜阴的农作物有哪些? 毛泽东的老家湖南省湘潭市韶山冲,“冲”是指什么?是行政单位吗? 两会中的人民代表大会和每五年一次的全国代表大会的区别是什么?如果本年度召开了全国代表大会,还要召开两会中的全国代表大会么? 在北方什么农作物喜阴 “韶山冲”中“冲”的意思是 几何除了欧式几何还有哪些几何大类? 什么作物喜阴 韶山冲为什么那么出名?韶山冲的“冲”是什么意思?湖南省湘潭市下辖的韶山市,有一个地方叫韶山冲,在全中国都很出名.一个小地方为什么那么有名气呢?韶山冲的“冲”是什么意思? 养怡之福的之,盈缩之期的之我知道这两个之词性一样,但不知是什么词性, 兵的故事;”但此刻,他肯定是最感寒冷的一个人“?这句话和故事的结局有什么关系? 韶山冲的冲是什么意思 Vien的意思Vien这个英语名字翻译过来叫什么.. 有什么喜阴的作物啊?我想种在我家的大树下! 我就是L音不准,怎么发音, Vien什么意思 为什么说“但此刻,他肯定是最感寒冷的的一个人”?这句话和故事的结尾有什么关系?《兵的故事》天黑了.暴风雪呼啸得更加(愤怒 狂怒).一辆客车已经被暴风雪困在公路上六七个小时.车上 人有悲欢离合,月有阴晴阳缺,此事古难全,但愿人长久,千里共蝉娟, sinh 《兵的故事》中为什么说"但此刻,他肯定是最感寒冷的一个人”?这句话和故事的结局有什么关系?” 但愿人长久,千里共蝉娟. 定义与性质的不同急以三角形为题 为什么说但此刻,他肯定是最感到寒冷的一个人?这句话和故事的结局有什么关系天黑了.暴风雪呼啸得更加(愤怒 狂怒).一辆客车已经被暴风雪困在公路上六七个小时.车上二十几名乘客中,有 但愿人长久,千里共蝉娟. 英文名Vien感觉怎么样?是什么含义? 中华人民共和国第十一届全国人民代表大会第二次会议是什么时候开的 但愿人长久,千里共蝉娟.的意思? 性质和定义的区别 第十一届全国人民代表大会第四次全体会议什么时候召开? 祈祷的音怎么读 “性质”和“意义”有什么区别 第十一届全国人民代表大会什么时候开始,什么时候结束? 但愿人长久,千里共蝉娟!这句话的正确解释是什么? 喜阴的菜有哪些 方仲永从神童到“泯然众人”,这种变化的根本原因是用原文回答 “L”的发音不准怎么办 如何使用suggestion 理一理,连句成段.只写序号【】这个八边形的''藻井,还是古代的木质扬声器呢【】最典型的戏台 绍兴柯桥区塘乡的宾舍戏台距今已有400多年的历史.【】藻井壁间画着八仙过海的故事.【】在 方仲永由神通到泯然众人矣的三个原因是什么 加拿大12岁黑客攻击政府网站 只为换韩独岛宣传片因被指使用日剧片段已被临调查称德国近半知名体育品牌服装含有害英国遭飓风级暴风雨袭击 交通受阻数千美国最新研究:年过50 将更满意自己伊朗将举行系列会谈 为新一轮核问题谈默多克新闻集团英国部涉窃听丑闻 卡梅乌克兰女权人士在法国民阵线领导人面前安倍晋三再访土耳其 拟敲定核电力设施伊朗将举行系列会谈 为新一轮核问题谈法国卢浮宫博物馆藏文物精品在中国国家王家瑞会见罗马尼亚客人澳丛林火灾得到控制 灾民抱怨救济不到游日本老字号“送子汤” 美容减肥得贵乌克兰女权人士在法国民阵线领导人面前美国最新研究:年过50 将更满意自己印度洋葱供应紧张价格暴涨 政府指责中加拿大12岁黑客攻击政府网站 只为换日本最大快递公司曝出服务丑闻 冷藏邮法国夫妇汽车行李箱内藏一岁女婴 警方英国遭飓风级暴风雨袭击 交通受阻数千你们够了!韩国警方拘捕失事客轮船长和船员[短评]华润宋林案:从举报到落马有多南方都市报[来信/来论]关键在电视问政官员冒汗华语文学传媒大奖永久落户顺德浙江苍南遭围殴5人未穿城管服 城管队全国学生运动会迎来开幕倒计时100天刘汉等涉黑案公诉人放录像证明未刑讯逼保罗关键两罚不中汤普森22+7 勇士我在美国是怎么抢到学区房的36人遇难 266人失踪船长涉嫌犯“俄罗斯将在俄日争议岛屿新建军事设施安静了的F1还是F1吗?《武林外传》导演尚敬为范伟私人定制了遥控器3D《冰封》邀请读者提前看片《旗袍》编剧海飞推新作《回家》如果夜里不该吃东西那冰箱里为什么有灯等待了25年的重逢成都一居民从五楼摔到地面手臂那么粗的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘