自增运算符“++”和自减运算符“--”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载的是前置版本。要对后置形式进行重载,即 x++ 或 x--,就必须为重载函数再增加一个 int 类型的参数。该参数仅仅用来告诉编译器这是一个运算符后置形式,在实际调用时不需要给出实际的参数值。

示例,定义一个重载了前置 ++ 和后置 ++ 运算符的 Integer 类:

#include<iostream>
using namespace std; class Integer {
public :
Integer(int num) {
value = num;
}
Integer() {
Integer();
} friend ostream& operator <<(ostream& os, Integer& integer); Integer& operator ++()//前置形式
{
this->value++;
return *this;
} const Integer operator++(int) //后置形式
{
Integer tmp(this->value);
this->value++;
return tmp;
} int getValue() const;
int setValue(int num);
private:
int value;
}; int Integer::getValue() const
{
return value;
}
int Integer::setValue(int num)
{
value = num;
return value;
} ostream& operator <<(ostream& os, Integer& integer)
{
os << integer.value;
return os;
} int main(int argc, char* argv[])
{
Integer num();
cout << "num=" << num << endl;
auto value = num++;
cout << "num++=" << value << endl;
cout << "now num=" << num << endl;
value = ++num;
cout << "++num=" << value << endl; return ;
}

运行结果如下:

S:\Debug>string.exe
num=
num++=
now num=
++num=

最新文章

  1. java关键字 super 和 this
  2. 三表联查,这是我目前写过的最长的sql语句,嗯嗯,果然遇到问题才能让我更快成长,更复杂的语句也有了一些心得了
  3. OBST(Optimal Binary Tree最优二叉搜索树)
  4. 每个人都应该知晓的8项Resharper快捷键
  5. Android开发-API指南-&lt;meta-data&gt;
  6. MVC 的知识
  7. lucene4入门(2)搜索
  8. SQL中not and or优先级问题
  9. 从零开始学习MySQL2---MySQL的安装与配置(只有Windows)
  10. 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用
  11. Linux学习总结(七)—— CentOS软件包管理:脚本安装
  12. MATLAB EMD 初始
  13. Javascript高级编程学习笔记(37)—— DOM(3)Element
  14. 在Mac上安装MongoDB,配置全局路径
  15. 解决多人开发时使用window.onload的覆盖问题
  16. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第八集之安装Nginx】
  17. 20175310 《Java程序设计》第2周学习总结
  18. rsync+inotify文件同步
  19. 【AGC003F】Fraction of Fractal
  20. 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承

热门文章

  1. CSS01--概述与选择器
  2. dubbo学习笔记:快速搭建
  3. 【es6】数组扩展
  4. 四大组件之Activity——生命周期
  5. 2 小时学会 Spring Boot
  6. unity 优化之overdraw查看
  7. amazeui笔记-Cookie
  8. 升级Ubuntu 到14.04 64位 后eclipse出现闪退现象
  9. Vue 引入第三方js.css的方式
  10. Asp.Net 之字符串和集合的使用