前置++与后置++区别

el/2024/4/13 13:35:19

对于前置++与后置++以前只知道它们的两点区别:
1. 前置++:先加再用;后置++:先用后加。
2. ++i效率比i++效率高;

今日又添加一项:
3. 前置++可操作,后置++不可操作

只知其果,不明其因非学者姿态。
下面是前置++与后置++实现的demo:

#include <iostream>
using namespace std;class Clock {int hour, min, second;
public:Clock(int newhour, int newmin, int newsecond);void showClock()const;Clock& operator ++();	//前置++;可操作原因:返回的引用,还可以对对象进行操作。Clock operator ++(int);	//后置++;参数为int,用于区别前置++;可使用const修饰
};Clock::Clock(int newhour, int newmin, int newsecond) {if (0<= newhour && newhour < 24 && 0 <= newmin && newmin < 60 &&  0 <=newsecond && newsecond < 60) {this->hour = newhour;  //??为什么要加this ,事实证明加不加效果一样。this->min = newmin;this->second = newsecond;}else {cout << "Time error!" << endl;}
}
void Clock::showClock() const {cout << hour << ":" << min << ":" << second << endl;
}
Clock& Clock::operator ++() {second++;if (second >= 60) {second -= 60;min++;if (min >= 60) {min -= 60;hour = (hour + 1) % 24;}}return *this;
}
Clock Clock::operator ++(int) { //返回一定为对象嘛?看情况,大部分是。Clock old = *this;	//后置++效率低一点的原因。++(*this);return old;	//返回的是右值,是副本
}int main()
{Clock myclock(22, 59, 59);cout << "第一次时间: ";myclock.showClock();cout << "Clock++: ";(myclock++).showClock();cout << "++Clock: ";(++myclock).showClock();return 0;
}//result:
//第一次时间: 22:59 : 59
//Clock++ : 22 : 59 : 59
//++Clock : 23 : 0 : 1

拓:
左值:指表达式结束后依然存在的持久对象,可以取地址,具名变量或对象
右值:表达式结束后就不再存在的临时对象,不可以取地址,没有名字。


http://www.ngui.cc/el/4994713.html

相关文章

C++基础(code)

C基础学习&#xff08;code&#xff09; 算是突袭学习吧&#xff0c;可能不是很细。 英语渣&#xff0c;但还是可能会写一些英文注释&#xff0c;提高提高~~ #include <iostream> using namespace std;//函数声明&#xff0c;要么定义在main前,要么在main前面自己添加定…

NEO4J 安裝

NEO4J 安裝 安裝教程&#xff1a; https://blog.csdn.net/sinat_36226553/article/details/108541370 注意事項 不能安裝在 D:\Program Files下&#xff0c;會有不能識別’.ps1’ 拓展名&#xff0c;猜測是不能識別目錄中的空格導致。

Elasticsearch 进阶学习

先上两个学习链接&#xff1a; Elasticsearch学习笔记_KISS-CSDN博客 Elasticsearch API查询_森四杨的博客-CSDN博客 1. es分布式集群 1. 搭建过程 2. 概念 节点、分片&#xff08;Shards&#xff09;、副本(Replicas)、索引、文档、字段、映射对索引中的文档可以进行索引…

python 正则表达式转义上的 r 与反斜杠

先阅读 https://blog.csdn.net/jinixin/article/details/56705284 后举例 转义有两种&#xff1a; 首先是正常的字符串转义&#xff0c;对于特殊的字符进行转义。然后&#xff0c;对于正则表达式还要进行一次转义。 使用原生字符r 可以跳过一次转义。所以在正则表达式前可以…

Python 转义字符和正则表达式的元字符

python转义字符 图片来自 Python 转义字符 \x 正则表达式元字符 正则表达式其他字符

neo4j 关于日期和时间的操作

最近使用neo4j存储数据&#xff0c;其中包含了大量的时间数据&#xff0c;存储的时候都是以字符串的形式存储&#xff0c;如 ‘11:07’&#xff0c;导致后期查询后的数值计算比较困难。中文的这方面笔记似乎比较少&#xff0c;于是记录一下。日期和具体的时间操作类似&#xff…

Lua语言在移动iSO平台上成为新宠

http://www.cwowaddon.com/article-39-1.html Lua最流行的应用场景是在游戏中作为处理逻辑的脚本&#xff0c;即用来编写游戏的任务脚本&#xff0c;以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器&#xff0c;尽管脚本的运行效率低于编译好的二进制代…

Leaves -- iOS上一种图书翻页效果的实现

http://www.cnblogs.com/zhw511006/archive/2011/10/14/2212187.html 参考资料&#xff1a;App Store-safe Page Curl animations 源码下载地址&#xff1a;https://github.com/brow/leaves

ios xml解析比较 XMLPerformance

http://developer.apple.com/library/ios/#samplecode/XMLPerformance/Introduction/Intro.html

linux 终端颜色设置

http://hi.baidu.com/yarcowang/blog/item/b0c3f010fefdba1db9127b83.html 把这些定义放到你的~/.bash_profile里. 完整的内容如下: # for color export CLICOLOR1 # \h:\W \u\$ export PS1\[\033[01;33m\]\u\h\[\033[01;31m\] \W\$\[\033[00m\] # grep alias grepgrep --co…