zoukankan      html  css  js  c++  java
  • C++ 虚函数的使用

    虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:

    #include <iostream>
    using namespace std;
    
    class A
    {
    public:
        virtual void foo() { cout << "A::foo() is called" << endl;}
    };
    
    class B: public A
    {
    public:
        virtual void foo() { cout << "B::foo() is called" << endl;}
    };
    
    int  main(){
        A * a = new B();
        a->foo();       // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
        return 0;
    }
    2.1 使用virtual关键字
        考虑下面的类层次:
    class A
    
    {
    
    public:
    
        virtual void foo();
    
    };
    
    
    
    class B: public A
    
    {
    
    public:
    
        void foo();    // 没有virtual关键字!
    
    };
    
    
    
    class C: public B  // 从B继承,不是从A继承!
    
    {
    
    public:
    
        void foo();    // 也没有virtual关键字!
    
    };
    
    
    

        这种情况下,B::foo()是虚函数,C::foo()也同样是虚函数。因此,可以说,基类声明的虚函数,在派生类中也是虚函数,即使不再使用virtual关键字。

    输出的结果是

    B::foo() is called

        这个例子是虚函数的一个典型应用,通过这个例子,也许你就对虚函数有了一些概念。它虚就虚在所谓“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。

  • 相关阅读:
    Android 黑科技保活实现原理揭秘
    Flutter +携程=?
    图解设计模式-Prototype模式
    图解设计模式-Singleton模式
    比较B-tree索引与Hash索引
    类元数据Class Metadata
    DriverManager类
    XMLMapperBuilder类
    PooledDataSource类
    Java并发编程的艺术(笔记)
  • 原文地址:https://www.cnblogs.com/wanghuixi/p/6979679.html
Copyright © 2011-2022 走看看