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

散分,来拿把

编辑:说三道四文库 发布时间:2017-08-22 05:51
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可以发现这个错误。

说了一大堆,还是没有说清。搞清楚了发个消息给我,学习学习,谢了。
谢谢
接分了
谢谢
版主呢
谢谢~~~
楼主,该解贴了吧^_^
谢谢了!
祝你成功!!
设计你所需要的,而不是你想要的 疯狂谷歌建广告天网:电冰箱、汽车仪表盘、恒温器、眼镜和手表 开发者眼中的编程语言…… 寻下一突破口?黑莓推Project Ion项目,正式进军物联网 无人驾驶汽车真的要来了:飞思卡尔研制视觉芯片 支持物联网开发! Qt发布5.3版与嵌入式企业版 5月23日:Java已经19岁啦! Google发布Dart1.4版本,新增Observatory工具 《近匠》Mixtile:跑在盒子中的嵌入式平台 从研发、平台化到营销:移动时代,汽车厂商如何升级? CTO俱乐部“云计算创新与实践”沙龙:云计算的发展趋势与那些“坑” 一周消息树:大型网站系统与Java中间件 良心推荐:6款基于云的移动应用开发工具 Google Project Tango第二弹:可生成3D图像的平板电脑 API企业化战略部署三部曲(一) 高通产品市场经理刘晓光:详解骁龙Android SDK 苹果史上最大交易:斥资30亿美元收购Beats 微软是否应该提高Windows版本的推送频率? 咸鱼大翻身?索尼将发展可穿戴游戏设备 popping:基于Facebook Pop引擎的iOS动画库 《近匠》专访极路由CTO康神 真正智能中心应当这样做 为什么说Android才是游戏开发者的乐土? 开发移动医疗应用必知的10个掘金点 个推CTO叶新江:云推送技术如何助力产品开发 《近匠》Face++:漫谈人脸识别 无线充电技术赛高:随意走动也能电量满格 体验至上!移动Web应用JavaScript UI库App.js 专访中国国航:传统行业的“轻应用观” 开发者找众筹,哪些网站更靠谱? 48小时脑力激荡 中美青年创客大赛英特尔北京选拔赛 “微应用+大平台”推动企业软件走向碎片化 TreeView专题讨论 j2me中请问如果将textField中的内容写入到moto388手机的记事本中? 在vc中调用其他的exe include 另外一个jsp文件时,能向那个文件传参数吗?不能的话,有其他办法吗?谢谢 系统不能识别DaysBetween,如何处理 请问如下通过web连续下载图片,只是第一张要提示,以后每张就不再提示了? 关于ADO驱动MDAC版本的疑问 兄弟要工作了,是不是只要见到领导都要打次招呼? 我的问题!! 最近在用MFC写GDI程序,请前辈们给点建议 老兄给一些建议啊!用VB做什么毕业设计比较合适啊? 急,获取主板信息的问题! 请教finder的排序问题 mysql对一个数据库中表的数量有没有限制? 100分,急求控件的编写方法~!!!!我在做的项目想用到类似于vc编译器左边的class,resource,file view的窗口控件,谁有? 为什么我收到的邮件列表每次都是乱码?怎样打开? 大家帮看看这段代码哪出问题了,在线给分 求高效统计算法(在线等待,采纳着需要分来信200) 怎样将bcb中vcl 及其他组件改为activex??? 微软的面试题 treeview 控件在客户端的操作? 怎样在程序里找无标题的DLG! j2me中请问如果将textField中的内容写入到moto388手机的记事本中? 谁可以和我说一下LINUX是如配置的! 请问:如何在java通过xml文件和他的schema,既得到标签里的内容,有能够知道内容的类型 已修改的列 C++Test讨论区 菜鸟提问,大家不要笑我啊! 这里还有人在用Java IDE工具JawaBeginer的吗? 有谁知道aspopup控件的功能和作用--在线等待 100分,急求控件的编写方法~!!!!我在做的项目想用到类似于vc编译器左边的class,resource,file view的窗口控件,谁有? 简单的菜鸟问题!! 如何写WPE这种类型的软件? 向DX请教两个开发上的问题,请不吝赐教! java中字符串数组,转化为javascript数组,jsp页面显示为乱码,代码如下: 小问题一个 有关QuickStart中示例 求SQL语句,一表值通过另一表更新 关于activebar 2。0 请问哪个中译英的免费软件好一点啊? 大虾救命:TCP编程的客户端端口占用问题 关于记录集的关闭! 本人现在做一个例程时遇到问题,编译后什么反应都没有,请教~~~~ 参数传递问题 刷新 LPCSTR在哪个文件里定义的? 如何判断一个存储过程已经存在??(在线) 关于TOMCAT的配置问题? datawindow的checkbox里可以放图片吗? 关于COMS的问题 interbase 数据库损坏???? 在线等待(100) 为什么真空包装可以防止细菌产生 5分之3ab的系数是 请在这里概述您的问题 我懂得了.看见了大海,我懂得了浩瀚; 看见蓝天,我懂得了辽阔; 看见小朋我懂得了.看见了大海,我懂得了浩瀚; 看见蓝天,我懂得了辽阔; 看见小朋友,我懂得了友爱 高温杀过菌 真空包装的中药液能放多久我拿了一个月的量 治疗慢性浅表胃炎的 不知道能不能放一个月 证明函数y=x+1/x 在(1,正无穷)上是增函数 0.9695保留整数是(),保留一位小数是(),精确到百分位是 什么细胞器含有的DNA最多?为什么? 证明函数y=x+1/x在(1,正无穷)上为增函数 英语翻译 含有DNA的细胞器同题细胞结构中科院发生剪辑背对行为的一组是细胞核线粒体叶绿体中心体,线粒体叶绿体核糖体高尔基体,细胞核核糖体中心体高尔基体,线粒体叶绿体核糖体细胞核。 证明函数 y=x+ 1/x在区间[1,+无穷)上是增函数.rtrtrtrt 电能的公式有W=I方Rt=U方比Rt吗电能不等于电热的时候这个式子成立吗 禁止静脉注射 药物有哪些 340米每秒分之S减5000米每秒分之S等于2秒,怎么算?求说的详细一点 求苏轼《有美堂暴雨》的理解、赏析. 发生在英国伦敦的故事谁知道发生在伦敦的一些故事 E=ΔΦ/Δt中分子等于B*S他们两项均是变量行吗,为什么 物理动能定理那块的题~质量为1000kg汽车,沿倾角37的斜面匀速向上行驶,速度大小为10m/s 求汽车重力势能增加多少?g=10好像是动能和机械能守恒 英国伦敦有什么传说故事和风俗习惯 一辆汽车在a(s)内行驶6分之s米,则它在两分钟内行驶多少米.初一数学资源学案上旳题,答案被撕了.= = 什么是电能,他有什么计算公式,单位是什么,简写是什么 关于伦敦历史英语故事伦敦历史英语故事 那些建筑,名胜的英语小故事 1.2.3.4题,谢谢,数学 拣菜 配菜 买菜 烧菜 洗菜给这些词语排序 二次函数的对称性是什么 (我的世界 高中函数学不会,怎么办啊? 有些螃蟹的足折断了还能再生出来,这种细胞的分裂方式为A无丝分裂 B有丝分裂 C减数分裂 D分裂生殖这种什么方式该怎么看呐,我怎么知道它是有丝还是无丝还是减数呐? 已知变量X,Y 满足{X≥1,Y≤2,X-Y≤0.则Z=X+Y 的最小值为 ( )求图像!X≥1,Y≤2,X-Y≤0 求图像. 我为什么函数老学不会如题 听的时候还差不多,做题的时候就不知道该怎么弄了,有时候题都看不懂 在生物学上,生物的生殖是为了本身的什么?晕 我的意思是种族的繁衍是为了什么?并且是在生物学上.以生物学的观点来叙述这个问题,种族繁衍谁都知道. 已知变量x,y满足条件{x 数学的函数为什么学不会啊. 已知函数f(x)=3sin(wx-∏/6)和g(x)=2cos(2x+φ)+1的图像对称轴完全相同若x∈[0,∏/2]则求f(x)取值范围和φ的取值,托大家的福. 生物的生殖使生物的——和——得以延续 用定义证明函数f(x)=1-1/x在(0,+∞)上是增函数. 动脉注射和静脉注射的区别在那里如题 二次函数的对称性(对于一般式) 谁能给几张玻璃之唇的壁纸啊 既是DNA载体,又是具有复制能力的细胞器是 二次函数都有对称性吗 两个一元二次方程应用题!如图 ,要设计一副宽20CM,长30CM 的图案,其中有两条横着的彩条,和两条竖着的彩条,横竖彩条的比为3:2,如果要使彩条所占面积是图案面积的四分之一,应如何设计彩条 函数题, 1952年的英国伦敦光化学烟雾事件用英语怎么说如果知道事情梗概的最好能用英语大致介绍一下,三两句话就可以. 点p(-2,6)关于y轴的对称点到原点的距离为 注射用核糖核酸Ⅱ可以静脉滴注吗?用多少液体加?因为产品说明上写的静脉注射和肌内注射 判断题:1.一根绳长4/5.() 2.两个数素数只有公因数1( ) 3.两个数的公因数的个数是无限的4.最.判断题:1.一根绳长4/5.( ) 2.两个数素数只有公因数1( ) 3.两个数的公因数的个数是无限的4.最 一个凸多边形共有20条对角线,它是几边形? 函数题一道, 科学家可以发明时光机吗 (急)数学难题:一个凸多边形共有20条对角线,它是几边形?是否存在有18条对角线的多边形?如果存在它是几边形?如果不存在请说明得出结论的道理. 把一质量为0,8kg的木块轻轻放入盛满水的烧杯中,当木块静止后溢出的水收到的重力为 N,如果木块的密度为0.8*10的三次方kg/m³,要将木块浸没在水中则在木块上施加一个大小为 N,方向 的力.( 五分之S的系数为五分之一,次数为1,为什么? 浦东新区2012学年度第二学期5月教学质量监测九年级数学(月考答案,2013年5月的)答案最后三道需要解题过程 高中数学必修5的余旋定律的题:a^4+b^4+c^4=2c^2 则角C等于? 正弦线是什么意思 简单的一元二次方程应用题一桌面长6米、宽3米,铺在桌上的台布的面积是桌面面积的三倍,并且各边垂下的长度相同,求这块台布的长和宽 人教版 第99页 第2题已知a>b>c,求证:(1)1/a-c1/(a-c)^2急用、谢了. 高一正弦定义题在△ABC中,已知AB=4,AC=7,BC边的中线AD=7\2,那么BC=_____ 蓝天如同浩瀚的海洋;白云________入团那天,春光融融,蓝蓝的天上飘着白云,校园里绽放着鲜花,团旗映着我们的面颊.那一刻,我的心里,蓝天如同浩瀚的海洋;白云___________________;鲜花犹如我们灿 法调查显示大量法国工程师赴中国等国家“叙利亚之友”反对巴沙尔在叙未来政府俄南部爆炸案致6人亡 女凶手原计划袭法国调查显示大量法国工程师赴中国等国中国土豪钟爱韩国皮草 炒高韩国皮草价数据显示日韩航路日本乘客骤减 创历史新华国际时评:中美航天应少猜忌、多合浙江义乌一处道路中间竖竹梯顶替电线杆美国否认与沙特阿拉伯关系紧张 坚称关2047年:全球高温临界点?沙特突然变脸 拒绝接受安理会席位阿拉伯国家呼吁沙特重新考虑拒绝安理会沙特拒非常任理事国席位 美媒:欲挑战潘基文说尚未收到沙特拒绝担任安理会非沙特拒安理会席位 美国作说客寻与沙特澳报:沙特拒安理会席位系赌气?沙特拒入安理会不只是赌气沙特拒绝安理会席位 日媒谋取而代之反联合国合唱”在中东响起 地区大动荡俄罗斯富豪赠女友奢华电子香烟 镶24南非一警察开枪打死津巴布韦外交官大盘形成多重三角区波动格局大学生可报名参选优秀纪录短片孕妇寻到失踪哥哥家人感激广东恩人传央行发行1000亿元定向央票北林大录取通知书贴树叶标本获好评广东省金融办原副主任李若虹违纪被查今日靓汤 南杏薏米滚鸡蛋碧昂丝巡演改歌词泄愤控诉老公偷腥?北京四大火车站全部部署狙击手暑运期间市客运站车票预售期调整为20胡舒立将卸任中大院长河南漯河高中74人高考获加分 41人乌拉圭足协已上诉 多方认为对苏神惩罚央行:交行担任首尔人民币业务清算行世界杯上的男神们孩子生病总不好 竟是过敏惹的祸“天使之翼”差点去挖煤道路交通违法扣留车辆公告英男性50岁收入最多 女性因生育收入伊拉克武装人员带走近50名印度护士美研究发现:两颗“超级地球”根本不存
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘