比如说我定义了一个String类里面有这样两个函数
String & String::operator =( const char * s )
{
delete [] str;
str=new char [strlen(s)+1] ;//多一位放\0嘛
strcpy(str,s);
return *this;
}
String & String::operator =(const String &s)
{
if(this==&s)//判断地址是否相等 为了a=a这样写也可以
{
return *this;
}
delete [] str;
str=new char (strlen(s.str)+1);
strcpy(str,s.str);
return *this;
}
然后我在main函数里写
String s,m,x;
s="Hi";
x="m" ;
然后在调试(m=s)=x语句的时候第二次进入函数到delete那里就出现了SIGTRAP,我想的是m=s返回值是m的引用,他已经分配过空间,并且里面和s的内容是一致的,为什么第二次delete的时候就会出现问题呢