第四部分 面向对象编程与泛型编程
第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