1-多态
- 多态的实现效果:多态实现了同样的调用语句具有不同的表现形态。
- 多态成立的三个条件:继承、徐函数重写、父类指针指向子类对象。
- 多态的C++实现方法:virtual关键字,告诉编译器要执行多态;不要根据指针类型来判断如何调用对应的函数,而是要根据指针所实际指向的对象的类型来判断如何调用。
- 多态的理论基础:动态联编(if、switch、多态)、静态联编、根据指针实际指向的对象的类型来判断重写函数的调用。
- 多态的重要意义:多态是设计模式的基础。
- 实现多态的理论基础:函数指针做函数参数。
- C++中多态的实现原理:1.当在类中声明虚函数时,编译器会在类中生成一个虚函数表;2.虚函数表是一个存储类成员函数指针的数据结构;3.虚函数表由编译器自动生成与维护;4.带有virtual关键字的虚函数会被编译器放入到虚函数表中;5.当类族中存在虚函数时,类族定义的每一个对象都有一个指向虚函数表的指针(VPTR指针)。
- 利用VPTR指针,C++编译器根据父类指针实际指向的对象的类型,转到该对象的虚函数表中,去查找相应的虚函数进行执行,从而实现了多态。
2-虚函数
- 问题1:C++编译器是如何对虚函数进行特殊处理的?
- 问题2:指针做函数参数。使用父类形参指针,接受实参,编译器如何知道接收到的是父类对象还是子类对象的指针?
- 问题3:多态是C++中的类指针特有的现象,且只有符合多