【C++】多态
多态C++实现多态的前提条件,存在继承关系,子类重写父类虚函数,并且父类指针调用子类重写的虚函数;
静态多态(编译时多态):函数重载(运算符重载),编译时可以确定的多态。
动态多态:通过指针或引用调用子类重写的虚函数,在程序运行期间才气确定具体调用哪一 函数个虚函数。
函数隐藏:子类中函数名和父类中函数名类似,子类对应函数会屏蔽父类同名函数。
函数的覆盖发生在基类和子类中,并且两个函数完全类似(且为虚函数),否则为函数隐藏
C++多态的实现
虚表指针与虚函数
[*]每个包含虚函数的类都有效来存放指针的数组(虚表),其中每一个元素对应该类的一个虚函数
[*]含虚函数类中的虚表,而非对象全部,一个类全部对象共用一个虚表,如果一个子类继承父类,父类若有虚函数,子类可调用父类的虚函数,子类也会有虚表。
[*]虚函数指针的赋值发生在编译器的编译阶段,在编译阶段虚表就构造出来了。
[*]为了让每个包含虚表的类对象都拥有一个虚表指针,编译器在类中填简历一个指针*_vptr
用来指向虚表。这样,当类的对象在创建时便拥有了这个指针,且这个只针对值会自动被设置为指向该类的虚表
动态绑定
静态类型和动态类型
静态绑定和动态绑定
虚析构
纯虚函数与抽象类
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]