新手求救
本帖最后由 JJ张彬华 于 2013-10-20 21:33 编辑#include <iostream>
#include <string>
class Myclass
{
public:
Myclass(int *num);
Myclass operator=(const Myclass &ris);
void printff();
private:
int *numm;
} ;
Myclass::Myclass(int *num)
{
numm = num;
}
Myclass Myclass::operator=(const Myclass &ris)
{
if(this!=&ris)
{
delete numm;
numm = new int;
*numm = *ris.numm;
}
else
{
std::cout<<"赋值号两边一样,不给予操作\n";
}
}
void Myclass::printff()
{
std::cout<<*numm<<"\n";
}
int main()
{
Myclass obj1(new int(1));
Myclass obj2(new int(2));
obj1.printff();
obj2.printff();
obj1 = obj2;
obj1.printff();
obj2.printff();
return 0;
}
既然这两对象分配的动态内存都不同了,那在重载函数中的delete numm;
numm = new int;不是就多余了吗?求解释
这个对于你这个特例来说,是可以不需要delete numm;numm = new int;但是你考虑如果numm 是个字符串指针,或者数组,就会造成内存泄露了 对,特别是对字符串的自适应问题,原来=号右边有多大,左边的对象就重新开辟多大的存储空间,而不是依旧原来的空间 魔火 发表于 2013-10-21 12:21 static/image/common/back.gif
对,特别是对字符串的自适应问题,原来=号右边有多大,左边的对象就重新开辟多大的存储空间,而不是依旧原来 ...
这样说是有明白一点,有没有关于这方面的资料读物吗,分享一下,谢谢
邮箱646494856@qq.com
页:
[1]