您的位置:首页 > 其它

解决浅层复制中容易出现迷途指针的方法

2013-11-08 10:18 281 查看
#include <iostream>

using namespace std;

class A

{

public:

A()

{

pa = new int;

*pa = 5;

cout<<"A 被创建"<<endl;

}

A(const A& a)

{

pa = new int;

*pa = *(a.pa);------------》避免被复制的和之前的都指向同一个地址,这里开辟一个新地址,把值丢到新地址里面去。你该干嘛干嘛去

cout<<"A 被复制:"<<*pa<<endl;

}

~A()

{

delete pa;

pa =NULL;

cout<<"A 被销毁"<<endl;

}

void print()

{

cout<<"pa:"<<*pa<<endl;

}

void set(int i)

{

*pa = i;

}

private:

int *pa;

};

int main()

{

A *pa = new A();

pa->print();

//cout<<"a:"<<<<endl;

A b =*pa;

b.print();

pa->set(21);

pa->print();

b.print();

delete pa;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐