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 ,操作符

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

相关推荐
是星辰吖~5 分钟前
C语言_数据结构_队列
c语言·数据结构
时雨h15 分钟前
Spring MVC 详细分层和微服务
java·数据结构·数据库·sql
Chenyu_31030 分钟前
05.基于 TCP 的远程计算器:从协议设计到高并发实现
linux·网络·c++·vscode·网络协议·tcp/ip·算法
论迹37 分钟前
【二分算法】-- 三种二分模板总结
java·开发语言·算法·leetcode
衡玖1 小时前
c语言闯算法--排序
c语言·数据结构·算法
机器视觉知识推荐、就业指导1 小时前
C++ 与 Qt 的内存管理机制
c++·qt
五花肉村长1 小时前
Linux-基础开发工具
linux·运维·服务器·开发语言·c++·visualstudio
衡玖1 小时前
c语言闯算法--图(1)
c语言·算法·图论
焦糖码奇朵、1 小时前
Matlab:矩阵运算篇——矩阵
算法·matlab·矩阵·信息与通信
点云SLAM2 小时前
C++ 平面拟合原理和最小法实现示例
c++·线性代数·平面·最小二乘法·平面拟合·pca算法