谭浩强C++程序设计第12章多态性与虚函数

 第十二章、多态性与虚函数

 

 

1,在C++中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数;

 

2,多态性分两类:静态多态性和动态多态性。

 

函数重载和运算符重载属于静态多态性;在程序编译时系统就能决定调用的是哪个函数;它是通过函数重载来实现的;

 

 

动态多态性是在程序运行过程中才动态地确定操作所针对的对象;它是通过虚函数来实现的;

 

3,提倡对程序分步调试,所以要写main函数;

 

4,不仅函数名相同,而且函数类型和函数个数都相同,两个同名函数不在同一个类中,而是分别在基类和派生类中,属于同名覆盖;

 

  重载的参数个数和参数类型必须至少有一者不同;

 

 

5,虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用访问基类和派生类的同名函数;

 

6,基类指针,可以调用同一类族中的不同类的虚函数,这就是多态性,对同一消息,不同对象有不同的响应方式;

 

 

7,关于虚函数使用方法:在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体;

 

8,C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都会自动成为虚函数;

 

(通过虚函数,和指向基类对象的指针变量的配合使用)

 

9,只能用virsual声明类的成员函数,使它成为虚函数,而不能将类外的普通函数声明为虚函数;

 

10,使用虚函数,系统要有一定的空间开销,编译系统会为该类构造一个虚函数表,它是一个指针数据;

 

11,如果将基类的析构函数声明为虚函数,由该类所派生的所有派生类的析构函数也都自动成为虚函数,(即使派生类的析构函数与基类的析构函数名字不相同)

 

这样,无论指针指的是同一类族中的哪一个类对象,当对象撤销时,系统会采用动态关联,调用相应的析构函数,对该对象进行清理工作;

 

 

12,构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,谈不上函数与类对象的关联;

 

13,纯虚函数是在声明虚函数时被“初始化”为0的函数;

 

  纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义;

 

  如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该函数在派生类中仍然为纯虚函数;

 

14,这种不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类,

 

只要含有纯虚函数的类就称为抽象类;

 

 

虽然抽象类不能定义为对象(或者说抽象类不能实例化),但是可以定义指向抽象类数据的指针变量;

 

 

 

 

 

 

 

 

15,

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值