【书籍阅读】《C++Primer》(第5版)——第四、五章阅读笔记

本文详细介绍了C++中的表达式,包括对象的值与身份、溢出、短路求值、后置与前置运算符的区别,以及成员访问、条件运算符和 sizeof 运算符的使用。此外,还探讨了C++的控制流语句,如if-else、switch、for、while和do-while,以及break、continue和goto的用法。同时提到了异常处理的try-catch机制及其在程序错误处理中的重要性。
摘要由CSDN通过智能技术生成

第四章 表达式

  • p121 对象被用作右值,用的是对象的值(内容);对象被用作左值,用的是对象的身份(在内存中的位置)
  • p125 环绕:符号位原本是0,由于溢出被改成了1,于是结果变成一个负值
  • p125 (-m)/n=m/(-n)=-(m/n)m%(-n)=m%n,(-m)%n=-(m%n)
  • p126 短路求值:当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值
  • p131 后置版本会将运算对象加1(减1),但是求值结果是运算对象改变之前那个值的副本,会将原始值存储下来以便返回这个未修改的内容,所以一般建议使用前置版本
  • p132 cout << *iter++ << endl;
  • p133 成员访问运算符:ptr->mem等价于(*ptr).mem
  • p134 条件运算符:cond?expr1:expr2;
  • p139 sizeof运算符:sizeof (type)sizeof expr,sizeof不需要真的解引用指针也能知道它所指对象的类型
  • p140 逗号运算符:首先对左侧的表达式求值,然后将求值结果丢弃,真正的结果是右侧表达式的值
  • p144 命名的强制类型转换:cast-name<type>(expression);
cast-name作用
static_cast不包含底层const
const_cast只能改变运算对象的底层const
reinterpret_cast为运算对象的位模式提供较低层次上的重新解释

旧式:type (expr)(type) expr

第五章 语句

  • p154 C++语言提供了一组控制流语句以支持更复杂的执行路径
  • p158 悬垂问题:确定else和哪个if匹配
  • p163 即使defaul标签下没有工作,定义一个default标签也是有意义的,说明考虑到了默认的情况
  • p165 定义在while条件部分或者while循环体内的变量每次迭代都经历从创建到销毁的过程
  • p168 C++11新标准
for (declaration : expression)
	statement
  • p169 do while语句应该在括号包围起来的条件后面用一个分号表示语句结束;condition使用的变量必须定义在循环体之外
  • p170 break负责终止离他最近的while、do while、for或switch语句
  • p171 continue终止最近的循环中的当前迭代并立即开始下一次迭代
  • p172 goto:不要使用
  • p177 try语句块和异常处理
try{
    ...
    throw runtime_error("ERROR");
} catch (runtime_error err){
    cout << err.what() << endl;
}
  • p175 每个标准异常类都定义了名为what的成员函数
  • p175 如果最终还是没有找到任何匹配的catch子句,程序转到terminate的标准库函数,一般情况下,将导致程序非正常退出
  • image-20221023212830736
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值