C++面向对象程序设计本学期知识点总结

面向对象程序设计知识点总结
1 对象的概念
面向对象的思想把整个世界看成是由具有某种特征行为功能的基本单元——对象构成的。OOAD把一个对象的特征称为属性,把其行为称为一种方法。一个对象,可以接受外部信息,也可以向外部提供某种服务,我们可以将参数传递给对象,请求对象处理之后返回给我们,即提供了服务。

2 信息的隐藏与封装
C++与C基本的改变就是把函数和数据放进了结构之中,即C++类。为了达到隐藏的目的,C++提供了private、protected和public声明哪些东西能否以及如何被访问。
虽然C++类很好用,当也不能一股脑儿都把不相干的数据和函数放到类中,要遵循最小化原则。

3 类的继承特性
什么是对象?对象就是类的一个实例,如果把类比作房子的图纸,那么类就是建好的房子。
什么是派生类和基类?派生类继承了基类的全部数据和函数,并具有自己私有的数据和函数,是“is a”的关系。比如人是一个基类,那么男人就是他的派生类,男人也是人。

4 动态特性
绝大部分情况下,程序的功能在编译之后固定下来了,我们称之为静态特性。相对的,如果是运行时才确定下来的,则称之为动态特性。
动态特性主要包括:虚函数、抽象基类、动态绑定和多态等等。

4.1 虚函数
有时候为了结构统一和管理方便,在基类定义一个接口函数,派生类分别继承并覆盖了这一接口函数。在运行时,动态的确定该用哪一个派生类的函数。这样的函数称为虚函数。一旦一个类里的某个函数被声明成了虚函数,那么其派生类的对应函数也会成为虚函数。
为了提高程序的清晰性,最好在每个派生类显示的声明虚函数(加virtual关键字)。

4.2 抽象基类
如果将基类的虚函数声明为纯虚函数后该类就变成了抽象基类。方法是将虚函数“初始化”为0(在后边添加“=0”),这样告诉编译器:不要为该函数编址,阻止类的实例化。
抽象基类的设计思想是“接口与实现分离”,因为抽象基类将数据和实现都隐藏在了实现类中,所以又被称为接口类。

4.3 动态绑定
理解动态绑定首先需要知道以下概念:

绑定:将函数体和函数调用关联起来(一般通过函数指针)
早绑定:在程序运行之前,即编译和链接是执行的绑定
晚绑定:即动态绑定。在运行时,基于不同类型的对象,对函数调用不同的函数体是发生的绑定。
如果一个语言要实现动态绑定必须有某种机制去确定对象的具体类型,然后调用适当的成员函数。为了达到动态绑定的效果,派生类和基类中同名的函数必须要有相同的原型。

4.4 运行时多态
因为派生类和基类是“is a”的关系,所以一个派生类也可以当成一个基类来使用。因此这些派生类对象在面对同一个函数调用的时候会有不同的反应,这就是运行时的多态。
C++实现运行时多态的方法有:

经过隐式转换,令一个基类指针指向它的一个派生类对象
通过这个指针调用基类的虚函数
使用dynamic_cast<>和typeid运算符
综合使用C++的虚函数和多态,有如下突出的优点:

只需要完成一次基类的调用,而不是完成每一个派生类的调用
派生类的功能可以被基类指针引用,即向后兼容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值