美文网首页
C++ 的多态(Polymorphism), virtual f

C++ 的多态(Polymorphism), virtual f

作者: 尚无花名 | 来源:发表于2019-09-30 15:30 被阅读0次

多态

c++支持两种多态,编译时多态和运行时多态
但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,overload。

“如果不是晚实现的多态,则根本不是多态”。
运行时多态才是正儿八经的多态, 通过override实现。
前掉是函数一定要有virtual, 有virtual才能override.
有virtual才能实现多态。
需要Clarify一点, 当你写了virtual的时候,并不代表子类一定需要override它。
子类不写的话就调用base的virtual function就行了。
Java里面没有virtual这个鬼东西。所以上来很蒙。

那么问题来了?
如果不写Virtual会是什么情况呢? 如果这时我在子类和父类里面各定义了两个相同的函数?
这时如果你在子类里面写override 关键字是会报错的。因为不是virtual 函数所以不能override。
这时如果建了一个子类。
拿着子类的pointer去call这个函数,会调用子类的函数。
拿着父类的pointer去call同一个对像的函数,会调用父类的函数。
这就没法实现多态了。

https://stackoverflow.com/questions/11067975/overriding-non-virtual-methods

虚函数 virtual function

可以被子类重新定义的函数。
注意你如果没写virtual, 就没法实现多态!
有的虚函数在父类没有意义,干脆就不写,所有子类必须要重新定义。这种叫做纯虚函数。
用 =0 来表示。

相关文章

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • C++基础多态(PolyMorphism)

    C++按照实现的时机分为编译时多态和运行时多态1.编译时多态也成为静态连编,是指程序在编译的时候就确定了多态性,通...

  • 多态

    多态 polymorphism 一个接口,多种方法 使用虚函数实现 基类成员函数添加了virtual关键字,该函数...

  • 语法

    virtual 1.virtual声明的函数实现多态就是通用的多态实现 2.纯虚函数C++的纯虚函数用于表示一个类...

  • 浅谈Java多态

    多态,英语Polymorphism,由希腊语的两个单词polys(意为many, much)和morphē(意为f...

  • Polymorphism多态

    分析下面代码: 可以很容易的看出这个例子是不可扩展的。如果想通过增加另外三种动物来扩展的话,你可能不得不在prin...

  • Swift进阶(八)汇编分析多态

    多态 多态的定义():多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言[https:/...

  • scala中的多态 Ad-hoc polymorphism和ty

    多态的类型(polymorphism) (1) parametric多态 下面例子来自scalaz教程: scal...

  • 虚函数

    简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类的函数。例如下...

  • Java_basic_10: 多态polymorphism

    多态polymorphism 多态是指对象的多种形态 主要可以分为引用多态和方法多态 继承是多态的实现基础 引用多...

网友评论

      本文标题:C++ 的多态(Polymorphism), virtual f

      本文链接:https://www.haomeiwen.com/subject/nfqcpctx.html