如果加上解析我就运行有个断点, 求大佬指教
本帖最后由 zds212 于 2021-5-7 22:32 编辑#include <iostream>
using namespace std;
class mint
{
public:
mint(int num)
{
number = new int(num);
}
mint& operator=(mint &p)
{
if (number != NULL)
{
delete number;
number = NULL;
}
number = new int(*p.number);
return *this;
}
int *number;
};
ostream& operator<<(ostream& cout,mint p)
{
cout << *p.number ;
return cout;
}
void text01()
{
mint p1(5);
mint p2(6);
mint p3 = p2=p1;
cout << p3 <<""<<p2<<""<<p1<<endl;
}
int main()
{
text01();
system("pause");
return 0;
} 如果加上下面代码解析的时候回出现问题。
~mint()
{
if(number!=NULL)
{
detele number;
number=NULL;
}
} 栈的变量也另外开辟了。有点混乱了。 mint p3 = p2=p1;这里,p3和p2地址一样,所以后面delete的时候,p2已经delete一次了,再delete p3就会报错 苏紫方璇 发表于 2021-5-5 14:46
mint p3 = p2=p1;这里,p3和p2地址一样,所以后面delete的时候,p2已经delete一次了,再delete p3就会报错
哦哦哦,多谢大佬指点。 本帖最后由 苏紫方璇 于 2021-5-5 15:01 编辑
zds212 发表于 2021-5-5 14:47
哦哦哦,多谢大佬指点。
ostream& operator<<(ostream& cout, mint &p)
这里少了一个&
苏紫方璇 发表于 2021-5-5 14:56
zds212 发表于 2021-5-5 14:47
哦哦哦,多谢大佬指点。
ostream& operator
嗯嗯。 我试试 {:1_893:} 我去看书,不知道怎么解决。 #include<iostream>
using namespace std;
//赋值运算符重载
class person
{
public:
person(int age)
{
m_age = new int(age);
}
~person()
{
if (m_age != NULL)
{
delete m_age;
m_age = NULL;
}
}
person& operator=(person &p)
{
//深拷贝
if (m_age != NULL)
{
delete m_age;
m_age = NULL;
}
m_age=new int(*p.m_age);
return *this;
}
int* m_age;
};
void test01()
{
person p1(5);
person p2(20);
person p3(30);
p1=p3 = p1=p2;
cout << *p1.m_age << endl;
}
int main()
{
test01();
system("pause");
return 0;
} 重新写了一下。 解决了。 多谢苏紫方璇论坛大牛帮忙!
页:
[1]