C++ Primer - 基础部分总结(1)

东阳的学习笔记

第二章:变量和基本类型

  1. 基本类型表
  2. 类型的选择:
    • 在明知数值不可能为负的情况下,选用无符号类型
    • 在算术表示式中不要使用char、bool
    • 执行浮点数运算使用double,一是因为float精度不够;而是因为计算代价相差无几,甚至有些设备上double更高
  3. 避免无法预知和依赖于实现环境的行为(C++标准所未定义的)
  4. 避免无符号数和有符号数混用
  5. C++中初始化和赋值是两个完全不同的操作。(赋值往往是先初始化在赋值)
  6. 列表初始化可以防止精度丢失
  7. 全局的变量会被默认初始化,定义在函数体内部的对象将不会被初始化(未初始化的变量含有一个不确定的值
  8. 对所有的指针进行初始化
  9. 空指针(nullptr, 0, NULL),C++中建议使用nullptr
  10. void*指针, 可以存放任何类型的指针
  11. const 的顶层和底层(顶层指指针本身是个常量,底层指指针指向的对象个常量)
  12. const对象默认只在本文件中有效,若要在其他文件中共享,则需要加extern
  13. auto一般会自动忽略顶层const, 如果需要顶层const,需要明确指出
  14. decltype的表达式如果加上括号,则是引用

第三章:字符串、向量和数组

  1. 头文件不应该包含using,避免include进自己不知道的声明
  2. 直接初始化和拷贝初始化(如果初始化要用到的值有多个,一般来说只能使用直接初始化的方式)
  3. cin 与 getline: getline会丢弃换行符
  4. 字符串字面值与string对象是不同的对象,字面值类型不能直接相加
  5. C++并不对下标进行检查,注意!
  6. 模板并不是类型
  7. 注意列表初始化和()和区别
  8. 在使用vector时不必设定其大小,可能会起到反作用
  9. 基于范围的for循环中不要想容器中添加元素
  10. iterator (读 and 写)和 const_iterator(只能读不能写) begin和end根据对象类型自己选择
  11. 迭代器就是指针
  12. 数组的指针和引用(这个看代码,直到理解)
  13. end返回尾后指针
  14. 使用引用可以避免数组降级(基于范围的for循环)

第四章:表达式

  1. 尽量不要写有表达歧义的表达式(如果一个地方改变了某个运算对象的值,表达式的其他地方就不要再用了)
  2. 逻辑运算符的短路求值
  3. 赋值运算符返回符号左端的运算符
  4. *pbeg++ 等价于*(pbeg++)
  5. 对string对象或者vector对象使用sizeof会返回类型固定分布的大小,而不是实际占用的大小
  6. 隐式转换的过程中,编译器会往尽可能避免精度损失的方向转化
  7. 整型提升 和 避免有/无符号数的混用
  8. 显式转换,static_cast(类型明确时使用)、const_cast(将常量对象转换为非常量对象,常使用在函数重载中)
  9. 尽量避免使用强制类型转换
  10. 运算符优先级表(P147)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东阳z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值