c++ primer 积累 2020

  1. 如果表达式里既有带符号烈性又有无符号类型,当带符号取值为负时会出现异常结果,如果 int a= -1, b= 1; a*b显然为-1 ,但 int a; unsigned int b; 则结果须视在当前机器上int所占位数而定
  2. 使用未初始化变量的值时一种错误的变成行为并且很难调试。建议初始化每一个内置类型的变量
  3. 对于命名规范来说,若能坚持,必将有效
  4. 一般来说在对象第一次被使用的地方附近定义它是一种好的选择,这样做有助于更容易找到变量的定义。更重要的是,当变量的定义与它第一次被使用的地方很近时,我们会赋给它一个比较合理的初始值
  5. 引用必须被初始化。int &refval; //wrong
  6. 引用并非对象,它只是为一个已经存在的对象所起的另外一个名字
  7. 引用类型的初始值必须是一个对象。 int &refval = 10; //wrong
  8. 引用类型的初始值必须相同 double dval =3.14; int &rafval5 = dval ;// wrong
  9. 得到空指针最直接的方法就是用字面值nllptr来初始化指针
  10. 建议初始化所有指针
  11. 指针和引用都能提供对其他对象的间接访问
  12. pi = &val; 赋值永远改变的时等号左侧的对象。
  13. void * 是一种特殊的指针类型,可用于存放任意对象的地址
  14. // i是一个int 型的数据,p是一个int型的指针,r是一个int型引用
    int i = 1024; *p = &i; &r = i;
  15. const对象必须初始化
  16. constexpr指针的初始值必须是nullptr或者0,或者存储于某个固定地址中的对象
  17. 类型别名 typedef
    typedef double wages;
    typedef wages base;
  18. 别名声明
    using SI = Sales_item;
    SI item;
  19. 可以使用decltype(*beg)来获取此表达式的类型
  20. 所有迭代器操作都不会生成元素,只能生成元素的引用
  21. 左值:一个变量或一个返回引用类型的表达式

2021-1-19
3.5.5
现代的c++程序应当尽量使用vector和迭代器,避免使用内置数组和指针。应该尽量使用string,避免使用C风格的基于数组的字符串。

3.6.1

int *ip[4]; //整型指针的数组
int (*ip)[4]; //指向含有4个整数的数组

C++ 11新标准提出,通过使用atuo或者decltype就尽可能避免再数组前面加上一个指针类型了

4.11

double slope = static_cast<double>(j) / i;

强烈建议程序员避免使用强制类型转换。

6.2.2
如果函数无须改变引用形参的值,最好将其声明为常量引用

6.4
f(int, int);
f(double, double);

对于f(42, 2.56); 针对第一个参数 与 f(int, int) 更匹配;针对第二个参数 与 f(double, double) 更匹配;
编译器最终将以此调用具有二义性而拒绝其请求。

调用重载函数时应尽量避免强制类型转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值