| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 815 人关注过本帖
标题:关于赋值运算符重载的几个问题!求助!
取消只看楼主 加入收藏
rzcs0608
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-7-27
收藏
 问题点数:0 回复次数:1 
关于赋值运算符重载的几个问题!求助!

我是vc++的初学者,在关于赋值运算符重载方面有几个问题,希望大家能帮忙解决!万分感谢!
内容见附件!谢谢!也可见下:

#include<iostream.h>
#include<string.h>
class A
{
char *ps;
public:
A(){ps=0;}
A(char *s)
{
ps=new char[strlen(s)+1];
strcpy(ps,s);
}
~A()
{
if(ps) delete[]ps;
}
char *GetS()
{
if(ps)return ps;
else return "0";
}
A &operator=(A &b) //用以下三句替代均出现错误
// A operator=(A &b) 为什么返回值必须是引用类型?否则出错!!!
// A &operator=(A b) 参数采用值传递,不会产生对参数不小心的修改,但为何要采用引用传递?否则出错!!!
// A operator=(A b) 运行出错!
{
//if(ps)delete[]ps;
if(b.ps)
{
// ps=new char[strlen(b.ps)+1];
strcpy(ps,b.ps);
}
else ps=0;
return *this;
}
};

void main()
{
A s1("Computer!"),s2("China!");
cout<<s1.GetS()<<'\t';
cout<<s2.GetS()<<endl;
s1=s2;
cout<<s1.GetS()<<'\t';
cout<<s2.GetS()<<endl;
}


搜索更多相关主题的帖子: 运算符 赋值 重载 
2006-07-27 11:45
rzcs0608
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-7-27
收藏
得分:0 

多谢!

2006-07-27 12:21
快速回复:关于赋值运算符重载的几个问题!求助!
数据加载中...
 
   



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

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