《C++ Primer》读书记录四

第四部分  面向对象编程与泛型编程

第15章~16章

2015年5月18日  星期五  9:19

第15章 面向对象编程

  • 面向对象编程:概述

    • 面向对象编程基于三个基本概念:数据抽象,继承和动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另一个类,派生类继承基类的成员。动态绑定使编译器能够在运行时觉得使用基类还是派生类中定义的函数
  • 定义基类和派生类
    • protect成员,不能被类用户访问,但可以被该类的派生类访问
    • 派生类,class classname:access-label base-class,访问权限。默认具有private继承
    • virtual与其他成员函数
      • C++中的函数默认不使用动态绑定,要触发动态绑定,必须满足两个条件。1,只有指定为虚函数的成员函数才能进行动态绑定;2,必须通过基类类型的引用或指针进行函数调用。
      • 运行时确定virtual函数的调用
      • 编译时确定非virtual调用
    • 公有、私有和受保护的继承
    • 友元关系与继承,如果派生类想要将自己成员的访问授权授予其基类的友元,必须显示地这样做
    • 继承与静态成员,如果基类定义了static成员,则整个继承层次中只有一个这样的成员
  • 转换与继承

    • 派生类到基类的转换,使用派生类对象的地址对基类类型的指针进行初始化或赋值,同样,可以使用派生类类型的引用或对象初始化基类类型的引用
    • 基类到派生类的转换,不存在(自动)转换
  • 构造函数与复制控制,构造和复制控制成员不能继承
    • 基类构造函数和复制控制
    • 派生类构造函数
      • 合成的派生类默认构造函数
      • 定义默认构造函数
      • 向基类构造函数传递实参
    • 复制控制和继承  
    • 虚析构函数,保证运行适当的析构函数
    • 构造函数和析构函数中的虚函数
  • 继承情况下的类作用域,派生类的作用域嵌套在基类作用域中
    • 名字查找在编译时发生
    • 名字冲突与继承,使用作用域操作符访问被屏蔽成员
    • 作用域与成员函数,派生类成员函数屏蔽基类同名函数,即使函数原型不同
    • 虚函数与作用域
  • 纯虚函数

    class Disc_item:public Item_base{
    public:
        double net_price(std:size_z) const =0;
    };Disc_item discouted; //error, can‘t define a Disc_item object
    • 将函数定义为纯虚能够说明,该函数为后代类型提供了可以覆盖的接口,但是这个类中的版本绝不会调用,而且,用户将不能创建Dist_item类型而对象
    • 含有(或继承)一个或多个纯虚函数的类是抽象类。除了作为抽象基类的派生类的对象的组成部分,不能创建抽象类型的对象
  • 容器与继承
时间: 2025-01-17 21:59:49

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

《高效能程序员的修炼》读书笔记四

第一章第三节:如何培养写作习惯 -------------------------------- 我个人一直坚信要成为一名优秀的程序员,其实和写代码是没有多大关系的(刚好本书作者也是这样的想法).当然,作为一名程序员的话,具有一定水平的技术能力还是需要的.但,个人觉得更重要的是良好地沟通技巧. 本书作者的合伙人Joel Spolsky有过这样一段话: 杰出的程序员跟勉强过得去的程序员之间的差别,不在于他们掌握了多少种编程语言,也不在于他们谁更擅长Python或Java.真正的关键是,他们能不能把

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务

R实战读书笔记四

第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号.线.颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括如下. 一图胜千字,人们从视觉层更易获取和理解信息. 图形工作 R具有非常强大的绘图功能,看下面代码. > attach(mtcars) > plot(wt, mpg) > abline(lm(mpg~wt)) > title("Regression of MPG on Weight") > detach(m

C++ Primer笔记2_四种类型转换_异常机制

1.类型转换 命名的强制类型转换: 有static_cast.dynamic_cast.const_cast.reinterpret_cast static_cast: 编译器隐式执行的任何类型转换都可以由static_cast完成 当一个较大的算术类型赋值给较小的类型时,可以用static_cast进行强制转换. 可以将void*指针转换为某一类型的指针 可以将基类指针强制转换为派生类指针,但是不安全. 无法将const转化为nonconst,这个只有const_cast才可以办得到 举例:

C Primer Plus (第四章总结)

1.定义字符串可以直接在头文件下定义,如: #include <stdio.h> #define hello  "hello world!" 2.sizeof() 和 strlen() sizeof运算符是以字节为单位给出数据的大小,strlen()是以字符为单位给出长度. <string.h>包含许多与字符串相关的函数的原型,包括strlen() sizeof运算符提供的数据比肉眼直观的要大多一位,因为他把用来标志字符串的不可见的空字符也计算在内. 定义常量最

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

悟道--一位IT高管20年的职场心经 第四章 人情练达即文章 "问世间情为何物,直教人生死相许" 那是说的爱情. 职场中的人情实在没那么浪漫, 很多时候是冷冰冰的, 但是你必须去面对, 以积极的.正面的心态去面对. 不但要面对,还要苦心经营. 1.1  谁都别惯着:下属不能惯 学会安排事情,分担事情. 1.2  谁都别惯着:老板不能惯 怎么样去和不同性格的老板交流,老板也有他自己的不足的地方,在这种情况下,最好是自己有自己的解决问题的方法. 1.3  谁都别惯着:客户不能惯 对客户,有

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

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

快速学习C++ primer(第四版)第一天

//1.17 //遍历数组a,计算其中负数的个数 int amount=0; for(int i=0;i<strlen(a);i++) if(a[i]<0) ++amount; //1.19 //每隔输10个值 for(int val=lower,count=1;val<=upper;++val,++count) { cout<<val<<" "; if(count%10==0) cout<<endl; } 快速学习C++ prim

《C++ Primer》 第四版 第7章 函数

<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/9479711