C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现

问题:使用new申请的内存内存空间无法访问,也无法释放。

原因:直接对指向new申请的存储空间的指针变量进行赋值修改

后果:失去了原来的地址,原来的空间无法访问也无法释放,造成内存泄漏

还可能造成同一个内存释放两次

容易引起指针悬挂的方式:对象的初始化和对象间赋值

容易引起指针悬挂的条件:类中含有指针类型的成员时,使用默认的拷贝构造函数和赋值函数都会出现两个指针变量互相赋值,产生指针悬挂的问题。

解决方法:需要重新定义拷贝构造函数和超载赋值运算符

赋值操作符:    

作用:两个已经存在的对象间相互赋值,产生两个完全相同的内存拷贝

举例:string a("hello");//调用构造函数

string b("would");//调用构造函数

string c=a;//调用拷贝构造函数--风格差,应使用string c(a)

c=b;  //调用拷贝赋值函数

重载赋值运算符:

语法:

[cpp]  

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwfff.html