zoukankan      html  css  js  c++  java
  • 《C++ Primer》 第05章 【表达式】

    第五节:自增和自减操作符
    @ 学习摘录050:自增和自减操作符
    ——建议:只有在必要时才使用后置操作符。
    ——前置操作需要做的工作更少,只需加1后返回加1后的结果即可。
    ——而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。
    ——对于int型对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能花费更大的代价。
    ——养成使用前置操作这个好习惯,就不必操心性能差异的问题。 *****
    @ 学习摘录051:在单个表达式中组合使用解引用和自增操作
    ——*iter++的意思:等效于*(iter++)。子表达式iter++使iter加1,然后返回iter原值的副本作为该表达式的结果。
    vector<int>::iterator iter = ivec.begin();
    // prints 10 9 8 … 1
    while(iter != ivec.end())
      cout << *iter++ << endl;  // iterator postfix increment
    摘录有想:
    ——很多C++程序员都会习惯用这种方法的,可以简洁清晰不冗长。Good !
    第十一节:new 和delete 表达式
    @ 学习摘录052:动态创建对象的默认初始化
    ——在动态创建对象时,(几乎)总是对它做初始化也是一个好方法。
    ——同样也可以对动态创建的对象做值初始化
    string *ps = new string();  // initialized to empty string
    int *pi = new int();  // pi points to an int value-initialized to 0
    cls *pc = new cls();  // pc points to a value-initialized object of type cls
    ——对比下面的不同初始化方式的不同
    int *pi = new int;  // pi points to an uninitialized int
    int *pi = new int();  // pi points to an int value-initialized to 0      Good !
    @ 学习摘录053:
    ——一旦删除了指针所指向的对象,立即将指针置为0,这样就非常清楚地表明指针不再指向任何对象。
    摘录有想:
    ——如果用了delete *p; 之后 p = NULL;   Good !
    第十二节:显式转换
    @ 学习摘录054:
    ——命名的强制类型转换 cast-name<type>(expression);
    ——dynamic_cast,支持运行时识别指针或引用指向的对象。
    ——const_cast,将转换掉表达式的const性质。
    ——static_cast,编译器隐式执行的任何类型转换都可以由static_cast显式完成。
    ——reinterpret_cast,通常为操作数的位模式提供较低层次的重新解释。
    摘录有想:
    ——我想一般现在写程序的时候用到最多的是static_cast吧,而且,书上也建议,不要常用强制转换,如果程序写得好的话,就根本不用用上这个功能。

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787184.html
Copyright © 2011-2022 走看看