解决浅层复制中容易出现迷途指针的方法
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;
}
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;
}
相关文章推荐
- Java中容易出现乱码的地方以及解决方法
- MySQL无法启动、无法停止解决方法(安全设置后容易出现)
- ArcSDE复制数据时出现ORA-00955名称已由现有对象使用错误的解决方法
- 解决取消Notification调用cancelALl()方法时出现的空指针异常
- virtualBox使用复制的VDI出现UUID重复的错误(解决方法)
- Java中容易出现乱码的地方以及解决方法
- virtualBox使用复制的VDI出现UUID重复的错误(解决方法)
- Win7复制文件时出现:“您需要权限来执行操作!”(终极解决方法!)
- MySQL主从同步配置容易出现的问题以及解决方法
- win10电脑用IE11浏览器看视频容易出现绿屏故障怎么办?附解决方法
- jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
- ArcSDE复制数据时出现ORA-00955名称已由现有对象使用错误的解决方法
- MySQL无法启动、无法停止解决方法(安全设置后容易出现)
- jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
- 野指针出现的情况及解决方法
- 在dubbo调用实现类的方法时出现空指针的解决问题
- 在 Visual Studio 中打开编辑 cshtml 文件时出现错误:未能完成该操作 无效指针 的解决方法
- ArcSDE复制数据时出现ORA-00955名称已由现有对象使用错误的解决方法
- MySQL主从复制出现Slave_IO_Running,Slave_SQL_Running问题的解决方法
- 一个关于指针的问题,问题很简单,但容易出错,希望大家提出好的解决方法~~~