class a
{
a();
~a();
public:
       CString sk;
       int sk1;
       int sk2;public:
      a & operator =(a & s2);
}
a & a::operator =(a & s2)//重载赋值运算符
{
      this->sk = s2.sk;
      this->sk1 = s2.sk1;
      this->sk2 = s2.sk2;
      return * this;
}
这样写了以后,运行也都正常,不过我总是觉得有些不好的地方,会有内存的泄漏吗?该如何改进这个重载赋值运算符呢????希望大家帮帮我

解决方案 »

  1.   

    a& a::operator =(const a& s2)//加个const,好点
    这里直接赋值,没什么内存泄漏
      

  2.   

    还可以效率再高点。:P。const a & a::operator =(a & s2)
    {
        if(this == &s2)
            return *this;  
        sk = s2.sk;
        sk1 = s2.sk1;
        sk2 = s2.sk2;
        return * this;
    }实际上,定义拷贝赋值运算符时首先做自赋值检查也是个好习惯,当拷贝过程中存在内存释放和重新分配动作时尤为重要。
      

  3.   

    按steedhorse(晨星)的改进,不会有问题,也很标准!