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