C++基础:操作符

1 区分前置和后置 ++/--

以++为例

cpp 复制代码
前置++
UPInt& UPInt::operator++()
{
    *this += 1;
    return *this;
}

后置++
const UPInt UPInt::operator++(int)
{
    UPInt oldValue = *this;
    ++(*this);
    return oldValue;
}

可见后置操作额外生成了一个临时对象。

并且为了避免形如i++++(即使合法,也只会累加一次。++++i和嘎合法),这样的写法,后置++为返回值加上了const,会导致i++++错误,来避免上述写法。

2 不要重载&&,||和,操作符

2.1 "骤死式"语句

比如if语句中的 && 和 ||,保证了从左到右的执行顺序,并且当&&出现了false,其余的函数不执行并且直接返回判断。||出现了true也有一样的效果。

如果重载了&&和||,骤死式语句的特性将消失。

2.2 ,操作符

,的执行逻辑是,先执行,左侧,再执行逗号右侧,最后返回右侧的值。如果重载,无法保证左右执行顺序。

相关推荐
WHS-_-202234 分钟前
Python 算法题学习笔记一
python·学习·算法
是苏浙39 分钟前
初识集合框架
java·数据结构
沉鱼.4440 分钟前
第六届题目
算法
黑眼圈子1 小时前
总结一下用Java做算法的常用类和方法
java·开发语言·算法
apcipot_rain1 小时前
天梯赛练习集 时间规划 限时复盘 中档题详解(L1-6~L2-4)
算法
再卷也是菜1 小时前
第一章、线性代数(2)高斯消元法
线性代数·算法
NAGNIP1 小时前
一文搞懂CNN经典架构-EfficientNet!
算法·面试
如何原谅奋力过但无声1 小时前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
c++逐梦人2 小时前
C++11——— 包装器
开发语言·c++
小宇的天下2 小时前
Calibre LVS Circuit Comparison(2)
算法·lvs