博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Chapter4(表达式) --C++Prime笔记
阅读量:5019 次
发布时间:2019-06-12

本文共 1013 字,大约阅读时间需要 3 分钟。

1.重载运算符:为已经存在的运算符赋予另外一层含义。
2.左值与右值:  
①当一个对象被用作右值的时候,用的是对象的值(内容);当一个对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
②在需要用的右值的地方可以用左值替代,但是不能把右值当成左值使用。
3.在C++中一般的表达式说明符运算对象的求值顺序都没有明确规定,
是随机的,
因此在这些表达式中的对象来说,如果表达式指向并修改了同一个对象,会引发未定义的错误,只有
四个运算符的求值顺序是规定的,规定先求左侧运算对象的值,
&&  ||  ?: ,(逗号运算符)
4.(-m)/n和m/(-n)等价于-(m/n)而m%(-n)等价于m%n,(-m)%n等价于-(m%n)
5.赋值运算符的优先级低于关系运算符的优先级,所以在条件语句中,赋值部分通常应该加上括号。
6.除非必须,否则不使用递增递减运算符的后置版本。因为后置版本会有一个保留原始版本副本的过程,浪费资源。
7.sizeof并不实际计算运算对象的值。因此即使用sizeof计算解引用一个无效的指针仍是一种安全的行为。
sizeof对数组执行得到整个数组所占空间大小。sizeof不会把数组转换成指针来处理。
8.在大多数用到数组的表达式中,数组自动转换为指向数组首元素的指针。但是当数组被用作decltype,取地址符(&),sizeof以及typeid时候,这种转换不会发生
9.命名的强制类型转换:格式 cast-name<type>(expression);
cast-name分别为:
①static_cast:任何明确定义的类型转换,只要不包含底层的const,都可以用它。
例子:double slope = static_cast<double>(j) /i;
②const_cast:只能改变运算对象的底层const,不能改变其类型
const char *cp;
char *q = static_cast<char*>(cp); //错误,static_cast不能去掉底层的const
static_cast<string>(cp);//正确,字符串字面值转换成string类型
const_cast<string>(cp);//错误,const_cast只改变常量属性

转载于:https://www.cnblogs.com/LyndonMario/p/9326108.html

你可能感兴趣的文章
微服务实战(三):深入微服务架构的进程间通信 - DockOne.io
查看>>
Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
查看>>
Java:类与继承
查看>>
struts2-(2)HelloWorld
查看>>
python常用函数 库 转
查看>>
第一次爱你得是啥时候
查看>>
Redis4- llist的操作
查看>>
AJAX 实战【三级联动】分析
查看>>
日志收集思考
查看>>
asp.net 发布后,遇到的导出excel报错的问题
查看>>
(转)Spring boot——logback.xml 配置详解(四)<filter>
查看>>
项目中操作redis改brpop阻塞模式为订阅模式的实现-java实习笔记二
查看>>
PHP中各种Hash算法性能比较
查看>>
对象深度克隆
查看>>
12动态规划运用实例
查看>>
规则9 减少DNS查找
查看>>
web 富文本编辑器总结
查看>>
限制某个进程只能在某个CPU上运行
查看>>
宋体、实例-Java中的单例模式-by小雨
查看>>
AutoMapper转换规则
查看>>