|
楼主 |
发表于 2022-8-13 13:32:50
|
显示全部楼层
#include<iostream>
#include<string>
using namespace std;
class Data
{
friend ostream& operator<<(ostream& out, Data& ob);
private:
int mA;
int mB;
public:
Data()
{
mA = 0;
mB = 0;
}
Data(int a, int b):mA(a),mB(b){}
~Data()
{
}
void printData()
{
cout << "mA=" << mA << "\t" << "mB=" << mB << endl;
}
#if 0
Data operator++(int)//后置++千峰原文
{//在主函数中要定义一个对象接受这个没有加引用的值
Data old = *this;
this->mA++;
this->mB++;
return old;
}
#endif
#if 1
Data& operator++(int)//自己想的后置++
{//注意这两个函数重载的不同一个返回的是引用,一个没有引用
Data* data = new Data;
data->mA = this->mA;
data->mB = this->mB;
mA++;
mB++;
return *data;
}
#endif
};
ostream& operator<<(ostream& out, Data& ob)
{
cout << "mA=" << ob.mA << "\t" << "mB=" << ob.mB << endl;
return out;
}
void test()
{
Data data(10, 20);
cout << data;
cout << data++;
cout << data;
}
int main()
{
test();
system("pause");
return 0;
}//现在是从vs中把代码拷贝过来的,里面的重载后置++运算符一个是别人的视频教程,但是在主函数中要有一个对象接收,有一个我把对象定义在堆里面了,可以直接用cout输出,但是不知道怎样释放这个堆内存了,或者有别的更好的办法 |
|