在前缀递增时,若想要实现 这种连续自加,就要返回其对象的引用,这样才能保证操作的是同一块内存空间,否则就只是单纯的赋值操作,原来的对象并未被修改。
#include <iostream> using namespace std; class Complex { private: double i; double j; public: Complex(int = 0, int = 0); void display(); Complex& operator ++();//前缀自增 Complex operator ++(int);//后缀自增,参数需要加int }; Complex::Complex(int a, int b) { i = a; j = b; } void Complex::display() { cout << "i="<< i <<" j="<< j << endl; } Complex& Complex::operator ++() { ++i; ++j; return *this; } Complex Complex::operator ++(int) { Complex temp = *this; ++* this; return temp; } int main() { Complex comnum1(2, 2), comnum2, comnum3; cout << "自增计算前:" << endl; cout << "comnum1:"; comnum1.display(); cout << "comnum2:"; comnum2.display(); cout << "comnum3:"; comnum3.display(); cout << endl; cout << "前缀自增计算后:" << endl; comnum2 = ++comnum1; cout << "comnum1:"; comnum1.display(); cout << "comnum2:"; comnum2.display(); cout << endl; cout << "后缀自增计算后:" << endl; comnum3 = comnum1++; cout << "comnum1:"; comnum1.display(); cout << "comnum3:"; comnum3.display(); cout << "前缀递增加引用是为了连续自加++(++a)" << endl; Complex comcum4; ++(++comcum4); cout << "comcum4:"; comcum4.display(); return 0; }
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/6323.html