C++重载前后缀++,--
来源:互联网 发布:为什么黑客讨厌windows 编辑:程序博客网 时间:2024/04/27 15:40
首先切记一句话:前缀++比后缀++的效率高,返回引用的效率比返回对象的效率高,所以前缀++返回引用,后缀++返回对象。
在句法上,重载函数是通过它们的参数类型的差异区分的,但是不管是前缀形式还是后缀形式的自增和自减都没有参数,我们到底该怎么区分它们呢?在开始时,C++在语法上面确实是存在这个问题的,程序员对此颇有微词。后来C++中加了一些特性来解决这个问题。
C++规定后缀形式有一个int类型的参数,当函数被调用时,编译器传递一个0作为int参数的值给该函数。
且看下面的小程序:
#include <iostream>
class MyInt{
};
MyInt& MyInt::operator++()
{
}
const MyInt MyInt::operator++(int)
{
}
std::ostream& operator<<(std::ostream& out,const MyInt& t)
{
}
int main()
{
}
看上面的程序可以发现以下几点:
1.
2.
MyInt t(1);
t++++;
这样的形式将是正确的,这显然不是我们期望的。另外,只要看上面的后缀形式的定义即可知道,这样写t只是增加了1而不是我们期望的2,为什么呢?因为第二次的调用是用第一次返回的对象来进行的,而不是用t,它违反了俺们程序员的直觉。因此,为了阻止这些行为,我们返回const对象。
3.
以上就是自增\自减操作符重载的前缀和后缀形式,我们只要记住那个参数规定和返回值形式,就很容易掌握啦。
- C++重载前后缀++,--
- Objective-C 【NSString-字符串比较&前后缀检查及搜索】
- [c++]使用前后缀表示常量的类型
- CodeForces - 466C Number of Ways (前后缀和)
- C++: 重载前缀运算符与重载后缀运算符(以++为例)
- ++前后缀剖析
- ++、--前后缀区别
- 常量前后缀
- 前、中、后缀表达式
- hdoj2594 前后缀
- 前、中、后缀表达式
- 前中后缀表达式
- 获取文件名前后缀
- 中、前、后缀表达式
- 前中后缀表达式
- 前后缀和积
- hdu6025dp前后缀和
- 前 、中、后缀表达式
- 域名相关概念 — A记录,MX记录,CNAME记录,url转发,ns记录
- leetcode之Reverse Nodes in k-Group
- 游戏开发中的数学和物理算法(10):矢量 vs 标量
- js跳转到URL
- smarty模板标签
- C++重载前后缀++,--
- android开发之播放资源文件中的视频
- vc中读取wav文件的时长和文件播放的几种方式
- 代码二
- 第12周项目一(2)
- C#.NET程序设计教程实验指导(清华大学 江红,余青松)实验源码第六章
- CharSequence接口
- 游戏开发中的数学和物理算法(11):极坐标 vs 笛卡尔坐标
- 黑马程序员-Java基础08