Integer.h
- /*
- ++运算符的重载
- */
- #ifndef _INTEGER_H_
- #define _INTHGER_H_
- class Integer
- {
- private:
- int n_;
- public:
- Integer(int);
- ~Integer(void);
- //此处用const修饰有什么用
- void display() const;
- // 前置++ 声明
- //成员函数++重载
- //Integer& operator ++();
- //前置 ++ 友元函数重载
- friend Integer& operator ++(Integer& n);
- //后置 ++声明
- //后置++ 成员函数重载声明
- Integer operator ++(int n);
- //后置++ 友元函数重载
- friend Integer operator ++(Integer& in,int n);
- };
- #endif //_INTHGER_H_
Integer.cpp
- #include "Integer.h"
- #include <iostream>
- using namespace std;
- //使用初始化列表
- Integer::Integer(int n): n_(n)
- {
- }
-
- Integer::~Integer(void)
- {
- }
- void Integer::display() const {
- cout<<n_<<endl;
- }
- // 实现前置++的方法重载
- //注意:如果返回类型是 Integer将会调用拷贝构造函数,返回的是一个新的Integer类
- // 如果返回类型是Integer& 将会返回的当前对象
- //Integer& Integer::operator++(){
- //
- //
- // ++n_;//是前置++
- //
- // /**
- // * 为什么返回的是 *this ??
- // 解答:
- // this 是当前对象的指针, *this就是当前对象
- //
- // **/
- // return *this;
- //}
- Integer& operator ++(Integer& n){
- ++n.n_;
- return n;
- }
- //后置++ 成员函数重载 实现
- Integer Integer::operator++(int n){
- cout<<"后置++"<<endl;
- //实例化一个temp的临时Integer类,将其返回,但将n_进行+1操作 ,返回的temp的n_没有进行+1操作
- //这符合后置++ ,先使用值,再将其+1的特性
- Integer temp(n_);
- n_++;
- return temp;
- }
- Integer n1(10);
- n1.display();
- //n1.operator++();
- Integer n2 =++n1;
- //前置++ 调用形式
- ++n1;
- //为什么在这里再操作n1,n2却不跟着改变值?
- //n1.operator++();
- //++n2;
- n1.display();
- n2.display();
- Integer n3(17);
- //后置++ 成员函数 两种调用形式
- Integer n4 =n3++; // n3.operator++(9);
- n3.display();
- n4.display();
转载于:https://blog.51cto.com/vincenttung/1172491