class MyInteger
{
private:
int m_Num;
public:
MyInteger() : m_Num(0) {}
~MyInteger() {}
public:
// 前置递增重载
MyInteger &operator++()
{
m_Num++; // 先进行++运算
return *this; // 返回自身,解引用 this指针
}
// 后置递增重载
MyInteger& operator++(int)
{
// void operator++(int) int代表占位参数,可以区分前置和后置递增
// 后置递增要返回值 MyInteger operator++(int),因为 temp 是局部变量,函数结束后就释放了
// 实现先返回自身后运算结果
// 先记录当前值,递增,返回记录的值
// MyInteger temp = *this;
// this->m_Num++;
// return temp;
// test : 利用new
MyInteger* temp = new MyInteger(*this);
this->m_Num++;
return *temp;
}
MyInteger* temp = new MyInteger(*this);
这一步new的内存怎么释放掉
参考如下:
#include <iostream>
using namespace std;
class MyInteger
{
private:
int m_Num;
public:
MyInteger() : m_Num(0) {}
//添加了两个构造函数
MyInteger(int n):m_Num(n){}
MyInteger(MyInteger& s)
{
m_Num = s.m_Num;
}
~MyInteger() {}
public:
// 前置递增重载
MyInteger &operator++()
{
m_Num++; // 先进行++运算
return *this; // 返回自身,解引用 this指针
}
// 后置递增重载,注意这里的&删掉了
MyInteger operator++(int)
{
// void operator++(int) int代表占位参数,可以区分前置和后置递增
// 后置递增要返回值 MyInteger operator++(int),因为 temp 是局部变量,函数结束后就释放了
// 实现先返回自身后运算结果
// 先记录当前值,递增,返回记录的值
// MyInteger temp = *this;
// this->m_Num++;
// return temp;
// test : 利用new
//MyInteger* temp = new MyInteger(*this);
MyInteger temp(*this);
this->m_Num++;
return temp;
}
//重载输出运算符
friend ostream& operator<<(ostream &os,MyInteger &c);
};
int main()
{
MyInteger myint(0);
cout << myint << endl; // 0
cout << myint++ << endl; // 0
cout << myint << endl; // 1
return 0;
}
ostream& operator<<(ostream &os,MyInteger &c)
{
os << c.m_Num;
return os;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!