《C++ Primer》读书记录三

2015年5月14日 星期四  10:37

第三部分 类和数据抽象  第12章~14章

第12章 类

  • 类的定义和声明,数据抽象和封装
  • 隐含的this指针
    • 何时使用this指针,最常见情况:函数返回对调用该函数的对象的引用
    • 返回*this
    • 从const成员函数返回*this
    • mutable,希望类的数据成员(甚至在const成员函数内)可以修改,可以通过将他们声明为mutable来实现
  • 类作用域
  • 构造函数
    • 构造函数可以被重载
    • 实参决定使用哪个构造函数
    • 构造函数自动执行
    • 用于const对象的构造函数,const构造函数是不必要的。
    • 成员初始化的次序,它与成员被声明的次序一致,尽可能避免使用成员来初始化其他成员
    • 默认构造函数
  • 友元
    • friend机制允许一个类对其非公有成员的访问权授予指定的函数或类
      class Screen{
          friend class Window_Mgr;
          ......
      }
  • static类成员
    • 非static数据成员存在于每个类类型的对象中
    • static数据成员独立于对象,是与类关联的对象。特殊的整型const static数据成员可以在类的定义体内初始化
    • static成员函数没有this指针,可直接访问static成员,不可直接访问非static成员

第13章  复制控制

复制构造函数 copy constructor

析构函数 destructor

赋值操作符  assignment operator

  • 复制构造函数,C++支持两种初始化形式,复制初始化和直接初始化,iostream类不允许复制
  • string null_book="9-999-99999-9"; //copy-initialization
    string dots(10,'.'); //direct-initialization
    string empty_copy=string(); //copy-initialization
    string empty_direct;  //direct-initialization
  • 赋值构造函数
    class Sales_item{
        public:
            //赋值操作符的的声明
            Sales_item& operator =(const Sales_item&);
    }    
  • 析构函数  
    • 何时调用析构函数,撤销类对象时会自动调用析构函数。动态分配的对象超出作用域也不会运行析构函数,只有在指向该对象的指针被删除时才删除,如果没有删除指针,则不会运行该对象的析构函数。

第14章 重载操作符与转换

  • 重载操作符的定义
    • 赋值=,下标[],调用()和成员访问箭头->等操作符必须定义为成员函数
    • 复合赋值操作通常定义为类的成员,如果定义为非成员函数,编译器也不会报错
    • 改变对象状态或给定类型紧密联系的其他操作符,如自增,自减和解引用,通常定义为类成员
    • 对称的操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为普通非成员函数
  • 输入和输出操作符
    • <<和>>操作符的重载
    • 当定义符合标准库函数iostrean规范的输入或输出操作符时,必须使它成为非成员操作符。这是因为,如果将操作符定义为类成员,左操作数将只能是该类类型的对象,item<<cout;不符合正常使用方式
  • 算术操作符和关系操作符
    • 为了与内置操作符保持一致,加法返回一个右值,而不是一个引用
    • 定义了operator==的类给容易与标准库一起使用。有些算法如find默认使用==caozuofu 
    • 关联容器以及某些算法,使用默认<操作符。一般而言,关系操作符,诸如相等操作符。应定义为分成员函数
  • 赋值操作符
  • 下标操作符 operator[],提供读写访问
  • 成员访问操作符*,->
  • 自增操作符和自减操作符
  • 调用操作符和函数对象
  • 转换和类类型  转换操作符,operator type()
    • 转换类型必须是成员函数,不能指定返回类型,并且形参必须为空
    • 转换函数一般不应该改变被转换的对象,因此,转换操作符通常定义为const成员
原文地址:https://www.cnblogs.com/sherPur/p/4561398.html