《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成员
时间: 2024-08-02 23:59:35

《C++ Primer》读书记录三的相关文章

C++中的volatile(Primer读书笔记)

时间:2014.05.24 地点:基地 -------------------------------------------------------------------------- 一.简述 volatile限定符平时很少用到,今天倒是碰到了,所幸探个明白.volatile 英文字面意思是"不稳定的",确切的计算机含义时与机器相关,所以在对包含volatile的程序在移植到新机器或使用不同的编译器时往往还需要对编译器进行一些改变. -----------------------

C++ primer读书笔记10-继承

封装,继承,多态是C++的三大基本概念,这里着重总结一下继承相关的东西 1 类派生列表 类派生列表指定派生类要继承的基类,派生列表中有一个或者多个基类如: class B : public A1,protected A2,private A3 但是单继承时最常见的,多继承不多见 2 派生类的定义 派生类继承时,会包含父类的所有成员,即便私有成员不能被访问.父类中的虚函数,在派生类中一般也要定义,如 果不定义的话,派生类将继承基类的虚函数 3 基类必须是已经定义的 一个仅仅声明的类,是不能出现在派

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

《你必须知道的.NET》读书笔记三:体验OO之美

一.依赖也是哲学 (1)本质诠释:"不要调用我们,我们会调用你" (2)依赖和耦合: ①无依赖,无耦合: ②单向依赖,耦合度不高: ③双向依赖,耦合度较高: (3)设计的目标:高内聚,低耦合. ①低耦合:实现最简单的依赖关系,尽可能地减少类与类.模块与模块.层次与层次.系统与系统之间的联系: ②高内聚:一方面代表了职责的统一管理,一方面又代表了关系的有效隔离: (4)控制反转(IoC):代码的控制器交由系统控制而不是在代码内部,消除组件或模块间的直接依赖: (5)依赖注入(DI): ①

《世界是数字的》读书笔记 三

<世界是数字的>读书笔记 三 第六章 软件系统 操作系统是软件中的基础层,他负责管理计算机硬件,并为其他被称作应用程序的程序运行提供支持. 6.1操作系统 操作系统控制和分配计算机资源.首先,他负责管理CPU,调度和协调当前运行的程序.操作系统通常都需要管理数十个同时运行的进程或任务. 其次,操作系统管理RAM.他把程序加载到内存中以便执行指令. 最后,操作系统管理和协调外接设备的活动. 6.2操作系统怎么工作 计算机启动时首先要加载代码,加载的过程中还要检查硬件,比如哪些设备已经接入电脑,,

C++primer读书笔记11-多态

多态也是C++中的一个重要的方面,多态和动态类型,虚函数本质上是指相同的事情. 1 虚函数 类中的成员函数原型前面加上virtual 表面这个函数是个虚函数.虚函数的目的是为了在继承它的派生类中重新定义这个函数,以便于通过基类的指针或引用在运行时对派生类的函数进行调用. 2 派生类和虚函数 派生类一般情况下要重定义所继承的虚函数,有几个注意事项. <1>虚函数的声明必须和基类中的函数声明原型完全一致,例外的是当基类返回基类型的指针或者引用的时候,派生类可以派生类类型的指针或者引用 <2&

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

悟道—位IT高管20年的职场心经(读书笔记三)

悟道--一位IT高管20年的职场心经 第三章 世事洞明皆学问 职场就是你的大半个世界 是你一辈子也读不完的一大本书 想明白一个道理, 看明白一件事儿, 你就向成功迈进了一步. 1.1  "四行"说 四行是指: 第一,  你自己得行.自己的基础的能力是必须的,得靠自己学习. 第二,  得有人说你行.需要有伯乐,实际上是你得有一个自己的圈子,并且这些人都人认同你. 第三,  说你行的人得行.自己周围的圈子,里面也必须有牛人,只有在牛人的范围内,才能突显你自己的才能. 第四,  你身子骨得行

《R实战》读书笔记三

第二章  创建数据集 本章概要 1探索R数据结构 2使用数据编辑器 3数据导入 4数据集标注 本章所介绍内容概括如下. 两个方面的内容. 方面一:R数据结构 方面二:进入数据或者导入数据到数据结构 理解数据集 一个数据集通常由一个表格组合而成,行表示观测,列表示变量.病人的数据集如表1所示. 表1 病人数据集 数据集能够反映数据结构.数据类型和内容. 数据结构 R数据结构如图2所示. 图2:R数据结构 数据结构即数据的组织方式,R数据结构包括向量.矩阵.数组.数据框和列表等. R向量 R向量是一