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进行任何的赋值操作?
每次做赋值操作都会调用以上的函数一次,没有任何的问题!

解决方案 »

  1.   

    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进行任何的赋值操作?
    每次做赋值操作都会调用以上的函数一次,没有任何的问题!
      

  2.   

    那么sTestB = sTestA.c_str();到底是copy一份,还是传指针呢?
      

  3.   

    当然是复制了,除非是
    CString& sTestB=sTestA.c_str();