zoukankan      html  css  js  c++  java
  • 《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成员
  • 相关阅读:
    js实现多物体运动框架并兼容各浏览器
    JAVA-day08 下午-总结、測试
    更改Android应用程序的图标
    codeforces #296 div2 (527C) STL中set的运用
    曼昆微观经济学之征税的市场本质—冰激凌篇
    POJ 1789:Truck History(prim&amp;&amp;最小生成树)
    Android:Activity+Fragment及它们之间的数据交换(一)
    滴滴拉屎之后是什么?
    tmux安装
    IOS开发——Core Graphics &amp; Core Animation
  • 原文地址:https://www.cnblogs.com/sherPur/p/4561398.html
Copyright © 2011-2022 走看看