码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 虚函数的使用

时间:2017-06-10 20:29:41      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:实现   应用   log   new   通过   public   class   clu   return   

虚函数是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

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

 

C++ 虚函数的使用

标签:实现   应用   log   new   通过   public   class   clu   return   

原文地址:http://www.cnblogs.com/wanghuixi/p/6979679.html

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