CString 的赋值操作类似以下:
const CString& CString::operator=(const char * temp)
{
if(temp == this)
return *this;
if(m_pstr != NULL)//这是里面的成员指针
{
delete[] m_pstr;
m_pstr = NULL;
}
int ilen = strlen(temp);
m_pstr = new char[ilen];
if(m_pstr != NULL)
strcpy(m_pstr,temp);
return *this;
}为什么不可以对sTestB进行任何的赋值操作?
每次做赋值操作都会调用以上的函数一次,没有任何的问题!
const CString& CString::operator=(const char * temp)
{
if(temp == this)
return *this;
if(m_pstr != NULL)//这是里面的成员指针
{
delete[] m_pstr;
m_pstr = NULL;
}
int ilen = strlen(temp);
m_pstr = new char[ilen];
if(m_pstr != NULL)
strcpy(m_pstr,temp);
return *this;
}为什么不可以对sTestB进行任何的赋值操作?
每次做赋值操作都会调用以上的函数一次,没有任何的问题!
const CString& CString::operator=(const char * temp)
{
if(temp == this)
return *this;
if(m_pstr != NULL)//这是里面的成员指针
{
delete[] m_pstr;
m_pstr = NULL;
}
int ilen = strlen(temp);
m_pstr = new char[ilen];
if(m_pstr != NULL)
strcpy(m_pstr,temp);
return *this;
}为什么不可以对sTestB进行任何的赋值操作?
每次做赋值操作都会调用以上的函数一次,没有任何的问题!
CString& sTestB=sTestA.c_str();