《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
原文地址:https://www.cnblogs.com/sherPur/p/4557494.html