关于赋值运算符重载
定义一个mystring类型,成员变量时char*p
重载赋值运算符:
mystring& mystring::operator=(mystring &other);没有问题
但是重载mystring& mystring::operator=(const char *p);就出现问题了
主函数:mystring a = "abc";编译不能通过
mystring& mystring::operator=(mystring &e)
{
if ( this != &e )
{
if ( p != NULL )
{
delete [] p;
}
if ( e.get_p() != NULL )
{
p = new char[strlen(e.get_p())+1];
strcpy(p, e.get_p());
}
else
{
p = NULL;
}
}
return *this;
}
mystring& mystring::operator=(const char *s)
{
if ( s != NULL )
{
if ( p != s )
{
delete [] p;
p = new char[strlen(s)+1];
strcpy(p, s);
}
}
else
{
p = NULL;
}
return *this;
}
求高手!!!
[解决办法]
mystring a = "abc";这里不是调用operator=
而是调用拷贝构造函数 mystring(cosnt char*);
所以,你得实现一个拷贝构造函数才行
[解决办法]
楼上正解。。。
[解决办法]
我试了可以通过,确定是调用构造函数
[解决办法]
[解决办法]
mystring a = "abc";调用的是拷贝构造函数,
mystring a; a="abc";调用的是赋值构造函数。