一道C++编程问题

对于赋值符号“=”的在类中的重载。例:Cstringstr1;Cstringstr2;str1=str1+str2;程序已重载了两个类相加,主要是那个赋值的。。。Cstr... 对于赋值符号“=”的在类中的重载。
例:Cstring str1;Cstring str2;
str1=str1+str2;
程序已重载了两个类相加,主要是那个赋值的。。。
Cstring operator=(Cstring &temp)
{
Cstring all;
if(temp.pbuff==0)
pbuff=0;
else
{
int len=strlen(temp.pbuff);
all.pbuff=new char[len+1];
strcpy(all.pbuff,temp.pbuff);
}
return all;
}
可以编译,但运行会出现红叉叉。。
这是肿么了?~%>_<%
展开
 我来答
Clor001
2012-03-28 · TA获得超过803个赞
知道小有建树答主
回答量:399
采纳率:0%
帮助的人:374万
展开全部
关于 = 运算符的重载,2点;
第一:程序开头注意自赋值。
第二:返回值一定是 *this 的引用。
以下是修改后的程序:

Cstring& 类名::operator=(const Cstring &temp)
{
Cstring all;
if(temp == this) return *this
if(temp.pbuff==0)
pbuff=0;
else
{
int len=strlen(temp.pbuff);
all.pbuff=new char[len+1];
strcpy(all.pbuff,temp.pbuff);
}
return *this;
} //一般等号运算符的重载都是在类里面的,你直接这么玩不起来
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式