码迷,mamicode.com
首页 > 其他好文 > 详细

利用虚函数实现多态的方式:动态绑定

时间:2019-11-14 22:02:47      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:继承   成员函数   方式   版本   面向对象   思想   nal   pre   动态绑定   

基类指针/引用调用虚成员函数时才会发生动态绑定,即只有在程序执行阶段才知道调用哪个版本的虚函数。此时调用对象为该指针/引用的动态类型对象。(静态类型就是定义时的类型,此处也就是基类的类型,一般静态和动态类型时相同的,只有在这种情况下两者可能不同。)

OOP(面向对象编程)的核心思想“多态性”的根本就在于上述过程。

派生类覆盖要点

派生类中的虚函数要覆盖基类虚函数时,形参必须严格匹配(不然就成了在派生类中定义一个重载函数)。按c++11标准,可以在想覆盖的派生类虚函数形参括号后加override关键字,让编译器帮忙检查。

*规避动态绑定

可以使用作用域运算符(::)规避虚函数的动态绑定机制,这种情况通常是派生类虚函数要调用它覆盖的基类中的虚函数时。

*禁止继承和覆盖

final限定符可以禁止继承和覆盖

class A final{/* */};  //  类A无法被继承

如果一个类中的所有成员都是public的,可以用struct代替,两者的区别就在于成员的权限设置

struct B{
    virtual void fun() final;   //虚函数fun()无法被派生类覆盖
}

struct C:B{}
    void fun();  //报错,无法覆盖

利用虚函数实现多态的方式:动态绑定

标签:继承   成员函数   方式   版本   面向对象   思想   nal   pre   动态绑定   

原文地址:https://www.cnblogs.com/j-c-y/p/11862603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!