CSTRING a;
a="" (这个赋的是空字符) 和  a.Empty()  有什么区别么

解决方案 »

  1.   

    区别可以很直观地判断前一个调用的是参数为字符串常量的 = 运算符重载第二个用的是 CString::Empty()差别需要从源码上分析,很重要的一点是前一个不会引起释放缓存区的操作,因为字符串长度为 0
      

  2.   

    多谢fox000002,再问下字符串长度为 0,为啥就不会引起释放缓存区的操作呢?
      

  3.   

    = 是直接比较字符串,调用operator =
    Empty()直接调用成员函数,这种实现,一般内部有一个成员变量 m_Length, 直接判断这个变量是否为TRUE
      

  4.   

    vc 自带 mfc 的源码装 Visual Assist X 跳转到源码方便很多