必威体育Betway必威体育官网
当前位置:首页 > IT技术

虚函数

时间:2019-08-28 03:11:04来源:IT技术作者:seo实验室小编阅读:82次「手机版」
 

虚函数

l  虚函数是一种在基类定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,只要定义一个基类的指针,就可以指向派生类的对象。

注:无虚函数时,遵循以下规则:C++规定,定义为基类的指针,也能作指向派生类的指针使用,并可以用这个指向派生类对象的指针访问继承来的基类成员;但不能用它访问派生类的成员。

l 使用虚函数实现运行时的多态性的关键在于:必须通过基类指针访问这些函数。

l 一旦一个函数定义为虚函数,无论它传下去多少层,一直保持为虚函数。

l  把虚函数的再定义称为过载(overriding)而不叫重载(overloading)。

l  纯虚函数:是定义在基类中的一种只给出函数原型,而没有任何与该基类有关的定义的函数。纯虚函数使得任何派生类都必须定义自己的函数版本。否则编译报错。

l  纯虚函数定义的一般形式:

Virtual type func_name(参数列表)=0;

l  含有纯虚函数的基类称为抽象基类。抽象基类又一个重要特性:抽象类不能建立对象。但是抽象基类可以有指向自己的指针,以支持运行时的多态性。

l  虚函数范例:

#include <iOStream>

#define ECHO(str) std::cout << str

#define ECHOLN(str) std::cout << str<< std::endl

/* run this program using the consolepauser or add your own getch, system("pause") or input loop */

class Base{

public:

          virtual void who(){

           ECHOLN("我是基类!");

         }

};

class deriv_1:public Base{

public:

      voidwho(){

               ECHOLN("我是子类deriv_1");

      }

     

};

class deriv_2:public Base{

public:

         void who(){

               ECHOLN("我是子类deriv_2");

      }

};

int main(int argc, char** argv) {

classBase *b,b0;

classderiv_1 d1;

classderiv_2 d2;

b= &b0;

b->who();

b= &d1;

b->who();

b= &d2;

b->who();

return0;

}

输出:

我是基类!

我是子类deriv_1

我是子类deriv_2

相关阅读

虚函数

拥有 Virtual 关键字的函数称之为虚函数 虚函数的作用是实现动态绑定的,也就是说程序在运行的时候动态的的选择合适的成员函数 那

分享到:

栏目导航

推荐阅读

热门阅读