码迷,mamicode.com
首页 > 其他好文 > 详细

安全性良好的operator=操作,和新的new方法

时间:2016-06-13 18:52:59      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

class B
{
};
class A
{
public:
	A& operator=(const A& a)
	{
		B* temp = b;     //先用一个临时指针指向自己
		b = new B(*a.b);//关键复制,就是把b=new B;b=a.b;分开写
		delete temp;    //删掉过去的自己,delete 尽量后面写,万一delete后有抛出异常这些什么就很尴尬
		return *this;
	}
	B* b;
};

int main()
{
	int a = 3;
	int *b = &a;
	int *c = new int(*b);//新的new 方法,两条语句合在一起写
	int *d = new int;//和上面的同一个意思
	d = b;
	int *e = new int(a);//和上面的一个意思
	cout << *b << endl << *c << endl << *d << endl << *e;
}

  还有一种copy and swap的方法

 

    A& operator=(const A& rhs)
    {
        A temp(rhs);
        swap(temp);//iostream标准库即可,但不行不知道书原因还是?
    //    swap(temp, *this);出错
        return *this;
    }
    A& operator=( A rhs)
    {
        swap(rhs);
        return *this;
    }

  

安全性良好的operator=操作,和新的new方法

标签:

原文地址:http://www.cnblogs.com/vhyc/p/5581555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!