一道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;
}
可以编译,但运行会出现红叉叉。。
这是肿么了?~%>_<% 展开
例: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;
}
可以编译,但运行会出现红叉叉。。
这是肿么了?~%>_<% 展开
1个回答
展开全部
关于 = 运算符的重载,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;
} //一般等号运算符的重载都是在类里面的,你直接这么玩不起来
第一:程序开头注意自赋值。
第二:返回值一定是 *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;
} //一般等号运算符的重载都是在类里面的,你直接这么玩不起来
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询