`

C++ primer 笔记第五章

阅读更多

 5.4 赋值操作符

赋值操作符的左操作数必须是非const的左值。数组名是不可修改的左值,因此数组不可以作为赋值操作的目标。而下标和解引用操作符都返回左值。因此当将这两种操作用于非const数组时,其结果可作为赋值操作的左操作数。

5.4.1 赋值操作的右结合性

与下标和解引用操作符一样,赋值操作符也返回左值。同一,只要被赋值的每个操作数都具有相同的通用类型,c++语言允许将这多个赋值操作写在同一个表达式中。

5.4.2 赋值操作符具有低优先级

5.4.3 复合赋值操作符

复合赋值操作符的一般语法格式为:

a op=b;

其中op=可以是以下十个操作符之一:

+=,-=,*=,/=, %=  (算术操作符)

<<=,>>=,&=,^=   |=(bitwise 运算符)

每个复合赋值运算符实质上等价于,

a=a op b ;

这两种语法存在有一个显著的区别,使用复合赋值操作时,左操作数只计算了一次;而使用相似的长计算表达式时,该操作数计算了两次,第一是作为右操作数,而第二次则是作为左操作数。

5.5 自增和自减操作符

自增和自减运算都有前置和后置两种使用形式。

前置操作返回的是加1 后的值,所以返回对象本身,这是左值。而后置操作返回的是右值。

建议: 只有在必要时才使用后置操作符

前置操作需要做的工作更少,只需要加1后返回加1的结果即可。而后置操作符则必须先保存操作数原来的值,以便返回尚未加1之前的值作为操作的结果。对于int 型对象和指针,编译器可优化掉这项额外的工作,但是对于更多的复杂迭代器类型,这种额外的工作可能会要花费更大的代价。因此,养成使用前置操作这个好习惯,就不必担心性能差异的问题。

2.在单个表达式中组合使用解引用和自增操作

下面使用一种非常通用的c++编程模式输出ivec的内容:

vector<int>::iteractor iter =ivec.begin();
while (iter !=ivec.end())
cout<<*iter++<<endl;
 

由于后自增操作的优先级高于解引用操作,因此*iter++等效于*(iter++)。

建议:简介即是美

对于上面例子中代码,不建议用

cout<<*iter<<endl;

iter++;

来代替。

 5.9 逗号操作符

逗号表达式是由一组由逗号分隔的表达式,这些表达式从左到右计算。逗号表达式的结果是其最右边表达式的值。

 5.10 复合表达式的求值

含有两个和更多个操作符的表达式成为复合表达式。在复合表达式中,操作数和操作符的结合方式决定了整个表达式的值。

5.11 new和delete表达式

 

 

 

 

分享到:
评论

相关推荐

    C++ primer plus第五版学习笔记

    C++ primer plus 第五版的个人学习笔记,仅供大家学习参考。

    《C++ Primer》第五版中文版学习笔记

    《C++ Primer》第五版中文版学习笔记,适合完整看过原书一遍以上的人员复习与查阅使用。对于基础较好的,也可直接适用。

    C++ Primer 5th笔记200.pdf

    第五版我去年已经看过一遍了,对于里边的内容也有一个大概的印象,我的一个感受就是第五版的内容安排变好了,而且很多过于细节化的东西被隐藏了。这是非常好的,对于初学者来说更重要的是看到语言的全貌而不是抠细节...

    C++ primer 5th,第十一章——关联容器

    C++ primer 5th,第十一章——关联容器,笔记&思维导图 按教材整理。

    C++Primer Plus学习笔记(五)

    C++ Primer Plus 第9章内存模型和名称空间 new操作符以及名称空间的使用demo

    C++primer_plus_第五版_学习笔记

    对初学C++primer这本书的童鞋非常有用!!

    C++ Primer第五版中文版

    C++ Primer第五版中文版,很完整的文档,同样是C++学习最好的帮助文档。

    《C++ primer plus》读书笔记(二)

    本读书笔记是读了《C++ primer plus(第六版)》第五至八章的学习笔记。是C++读书笔记系列的第二篇。复习C++基础知识的可以瞄瞄。

    C++ 后台工程师面试宝典

    C++primer5笔记代码资料 STL 源码剖析 再硬核|5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码 硬核|万字长文炸裂!手撕 STL 迭代器源码与 traits 编程技法 超硬核 | 2 万字+20 图带你手撕 STL 序列式容器源码...

    Cpp-Primer:C ++ Primer解决方案第五答案

    C ++ Primer解决方案第五答案 概述 该项目仅包括C ++ Primer 5th的第8章至第19章的解决方案。 环保环境 WSL Ubuntu 20.04 编译器 gcc 9.3.0 编辑 Visual studio code 语境 第二部分:C ++库 第9章顺序容器 第10章...

    一些收集C++资料

    C++Primer第四版 C++学习思路(论坛帖)Effective C++ vc学习方法 Windows程序设计第五版 Window高级编程指南 孙鑫VC视频教程笔记 以上是我收集的一些能传上来的C++学习的资料,和大家分享下。

    CppPrimer:C++ 入门 5 个回答

    ##C++ 入门 5 个回答 ...第 5 章声明 第 6 章函数 第 7 章类 第二部分:C++ 库 第 8 章 IO 库 第 9 章顺序容器 第 10 章通用算法 第 11 章关联容器 第三部分:课堂作者工具 第四部分:高级主题 第 19 章专用工具和技术

    程序员为什么还要刷题-cpp_primer_solution:C++Primer第5版练习题,至第16.1章

    入门笔记 此自述文件包含阅读本书时的重要/难点。 引用类型 1. 无需重新绑定 从书中: 引用定义对象的替代名称。 当我们定义一个引用时,我们不是复制初始化器的值,而是将引用绑定到 ins 初始化器。 无法重新绑定...

    my-C-plus-plus:c++的学习笔记

    《C++ Primer》百科级 最新是第五版 作者参与了C++第一个编译器的实现 《The C++ Programming Language》最新是第四版,作者是C++之父,目前还没有中文版 《Effective C++》最新是第三版,告诉你什么改写,什么不该...

    CppPrimer:C ++ Primer第五次练习的解决方案

    C ++ Primer解决方案第五答案 笔记 使用GCC 4.9+ , Clang 3.4+ MSVC 14+ , MSVC 14+。 使用-std=c++11 (推荐: -pedantic -Wall )标志进行编译。 您发现不正确的信息了吗? 。 内容 第一部分:基础知识 第二...

    Cpp_primer_5th:C ++ Primer 5th习题答案和学习笔记

    目录第一部分:C ++基础第二部分:C ++标准库持续更新

    cpp_primer_plus:C ++ Primer Plus硬件

    cpp_primer_plus C ++ Primer Plus注释和作业 第二章功课完成 第四章注意事项 ...第五章笔记 第五章硬件完成 第6章注释(跳过文件I / O) 2021年2月12日的第7.3.5章 第7.7章使用strctptr.cpp 第7.8章

    若干源程序资料12.rar

    第五版.习题解答和例题代码.rar 2012-06-11 21:03 956,190 C++ Primer中文版(第4版)中的源代码.rar 2012-06-11 21:12 1,386,523 C++-打飞机的游戏.rar 2012-06-11 21:06 78,719 C++USB接口的鼠标驱动源程序.rar ...

    ASP.NET常见问题集锦.zip

    ASP.NET常见问题集锦.zip . .. .net中中文乱码问题解决.txt ADO.NET 与 XML:双剑合壁,威力强大.doc ... ASP.NET ViewState 初探.doc ASP.NET Web 方法中的 ... 面向对象设计(OOD)思想(C#) - c-c++ - CSDN

Global site tag (gtag.js) - Google Analytics