• 《C++ Primer》读书记录一


    2015年5月11日 星期一 19:59

    第1章 快速入门

    第一部分 基本语言 第2章~第8章

    第2章 变量和基本类型

    • 基本内置类型,整型(整数,字符和布尔值),浮点型(float,double,long double),有符号/无符号类型
    • 字面值常量
    • 变量,左值和右值
      • 变量名,定义对象,变量初始化规则
      • 声明和定义
      • 名字的作用域
    • const限定符,只读类型,而不是英文单词常量的意思。
    • 引用,引用和指针的区别?
    • typedef
    • 枚举
    • 类类型

    第3章 标准库类型

    • 命名空间的using声明
    • 标准库string类型
      • string对象的定义和初始化
      • string对象的读写
      • string对象的操作
      • string对象中字符的处理
    • 标准库vector类型,定义和初始化,vector对象的操作
    • 迭代器简介
      • vector <int>::iterator iter;
      • vector <int> ivec;
    • 标准库bitset类型,bitset对象的定义和初始化,bitset<32> bitvec;bitset对象上的操作

    第4章 数组和指针  

    • 数组,数组的定义和初始化,数组操作
    • 指针的引入
      • 指针的定义和初始化
      • 指针的操作
      • 指针和引用的区别
      • 使用指针访问数组元素
      • 指针和const限定符
    • C风格字符串,以''空字符结束的字符数组。
      • 创建动态数组,C中malloc,free,C++增加了new和delete。前者为函数,后者是操作符 。而且new不仅分配内存,而且真正的建立一个对象,而malloc只分配内存。
    • 多维数组,本质是数组的数组

    第5章 表达式

    • 算术表达式,优先级由大到小:+/-(正负符号)>{*,/,%}>+/-(加减符号)
    • 关系操作符和逻辑操作符,!>{<,<=,>,<=}>{==,!=}>&&>||
    • 位操作符,~,<<,>>,&,^,|
    • 赋值操作符,右结合性,低优先级
    • 自增和自减操作符
    • 箭头操作符,(*p).foo等价于p->foo
    • 条件操作符 三元操作符,cond?expr1:expr2;
    • sizeof操作符,返回值为size_t,无符号数
    • 逗号操作符,从左到右计算,优先级最低
    • 复合表达式的求值,优先级+结合性+求值顺序
    • new和delete表达式,除了动态创建和释放数组,还可用于动态创建和释放单个对象
    • 类型转换
      • 何时发生隐式类型转换,混合类型表达式中,作为条件的表达式被转换为bool,
      • 算术转换,整型提升,有符号与无符号的转换
      • 其他隐式转换,指针转化
      • 显式转换cast,因为需要覆盖通常的转换标准,所以需要显式使用强制类型转换。cast-name<type>(expression)
        • dynamic_cast:支持运行时识别指针和引用所指的对象
        • const_cast:转换掉表达式的const性质
        • static_cast:编译器隐式执行的任何类型转换都可以由static_cast显式完成
        • reinterpret_cast:通常为操作数的位模式提供较低层次的重新解释  

    第6章 语句

    • 简单语句,表达式语句,空语句
    • 声明语句
    • 复合语句(块),用一对花括号括起来的语句序列,可为空
    • 语句作用域                                                                                                  
    • if语句,悬挂else问题
    • switch语句,switch语句中的控制流,break语句,default标号
    • while语句
    • for循环语句
    • do while语句,以分号结束,和while语句不通                 

             

    • break语句,结束最近的while,for,switch,将程序传下面
    • continue语句,导致最近循环语句的迭代提前结束
    • goto语句,函数内部无条件跳转
    • try块和异常处理,throw表达式,try块,catch子句
      try
      {
          //正常逻辑的代码,比如两个数相加
          //如果相加失败,抛出runtime_error异常
      }
      catch (runtime_error err)
      {
          //异常处理代码
      }
      catch (CFileException* e)
      {
          //异常处理代码
      }
      catch (CException* e)
      {
          //异常处理代码
      }
    • 使用预处理器进行调试

    第7章 函数

    • 函数的定义,函数返回类型,函数形参表
    • 参数传递
      • 非引用形参:通过复制对应的实参实现初始化,指针形参,const形参
      • 引用形参:不复制参数,类似于传址
        void swap(int &v1,int &v2)
        {
            int temp=v2;
            v2=v1;
            v1=temp;
        }
      • vector和其他容器类型的形参
      • 数组形参
    • return语句
      • return;返回类型为void的函数
      • return expression;
    • 函数声明
      • 返回类型+函数名+形参列表----->函数原型
      • 默认实参可以再函数声明可以再函数定义中指定,但在一个文件中,只能为一个形参指定默认实参一次
    • 局部对象
      • 自动对象:只有当定义它的函数被调用时才存在
      • 静态局部对象:位于函数作用域内,生命期跨越这个函数,被多次调用,static
    • 内联函数
      • 避免函数调用的开销,inline
      • 内联函数应该在头文件中定义,以便编译器能够在调用点内联展开函数的代码,仅有函数原型是不够的
    • 类的成员函数
      • 定义成员函数的函数体:可以在类内定义,也可以在类外定义
      • 累的构造函数,constructor
    • 重载函数
      • 出现在相同作用域的两个函数,具有相同的名字和不同的形参,成为重载函数
    • 指向函数的指针 
      bool ((*pf)(const string&,const string &);
      //用tepydef简化函数指针的定义
      typedef bool (*cmpFcn)(const string&, const string &);

     

    2015年5月13日  星期三 10:52

    第8章 标准IO库

    • 面向对象的标准库
      • iostream 定义读写控制窗口的类型
      • fstream 定义读写已命名的文件的类型
      • sstream 定义用于读写存储在内存中的string对象
    • 条件状态
    • 输出缓冲区的管理,缓冲区内容被刷新,写入真实输出设备或文件的5种情况:
      • 程序正常结束,作为main返回工作的一部分,将清空所有缓冲区
      • 在一些不确定的情况下,缓冲区已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新
      • 用操作符显示地刷新缓冲区,例如行结束符endl
      • 在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而情况缓冲区
      • 将输出流与输入流关联(tie)起来,在这种情况下,在读输入流时将刷新其关联的输出缓冲区
    • 文件的输入和输出,ifstream,ofstream,fstream
    • 字符串流,istringstream,ostringstream,stringstream
  • 相关阅读:
    Qt C++中的关键字explicit——防止隐式转换(也就是Java里的装箱),必须写清楚
    有栖川有栖《马来铁道之谜》读后感
    Qt多国语言QT_TR_NOOP和QT_TRANSLATE_NOOP
    Qt调用VC++生成的动态链接库
    QTabWidget添加自定义样式
    Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)
    OO五大原则
    《Head First Python》学习笔记03 异常处理
    使用Qt实现MDI风格的主窗体
    Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)
  • 原文地址:https://www.cnblogs.com/sherPur/p/4557494.html
Copyright © 2020-2023  润新知