美文网首页
C++虚函数初步

C++虚函数初步

作者: 余些永 | 来源:发表于2017-02-28 11:02 被阅读0次

刚开始接触C++中的虚函数,云里雾里的感觉,后面看了几篇博客,了解了一些。

C++中面向对象程序设计中具有多态性,意思是对不同的对象发送同一个消息,而不同的对象对这消息的回应有着不同的行为。举个例子,你从火车站出来,大吼一声我要去XXX地方,会有的士、公交、三轮车还有黑车等着你,这时你可以选择其中之一,每种车明显不同,有的快,有的舒适,有的危险。在这里面,“吼声”就是C++中的消息,其中不同的对象即为各种车,消息是一定的,但回应的方法有多种。在C++里面,虚函数有着自己的作用。

假设有这么一个基类,比如:

class Car{

private:float Speed;

public:

car(float speed){

Speed  =speed;

}

void drive();

};

现在我们为它添加派生类:

class Bus:public Car{

public:

Bus(float speed):Car(Speed){};

void drive();

}

然后在main中加入

Car *car;

Bus bus(60);

car = &bus;

car->drive();

运行会发现最后的drive()是调用的基类的drive(),即是car中的,而不是bus中的,为什么呢,虽然派生类对象调用同名成员函数是来自自己类中的成员函数,但是当基类指针指向共有派生类对象时(也就是bus),它只能访问从基类继承下来的成员,而不能访问派生类中定义的成员。那么想使用bus中的drive()函数该怎么办呢?说起来也简单,只需将所有类中的drive()函数声明前加上virtual将其变为虚函数就行啦

相关文章

  • C++虚函数初步

    刚开始接触C++中的虚函数,云里雾里的感觉,后面看了几篇博客,了解了一些。 C++中面向对象程序设计中具有多态性,...

  • c++虚函数与虚表初步

    虚指针与虚表 虚表和虚函数是为了实现动态多态的机制,由编译器实现 当一个类本身定义了虚函数,或其父类有虚函数时,编...

  • C++ 虚函数

    C++ 虚函数 虚函数 基类中使用virtual关键字声明的函数,称为虚函数。虚函数的实现,通过虚函数表来实现的。...

  • C++学习笔记

    C++面对对象 实函数,虚函数,纯虚函数,函数重写 虚函数:需要进行子类的重写时。virtual void 函数名...

  • (Boolan) 面向对象高级编程(下)第四周笔记

    一、虚函数表 对C++ 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)...

  • 查漏补缺

    C++虚函数: 多态: 静态多态(重载)、动态多态(虚函数) 虚函数 虚函数表:编译器为每个类创建了一个虚函数表...

  • C++ 虚函数本质

    C++ 虚函数本质

  • pwnable.kr之uaf && c++虚函数

    c++的逆向还是要熟悉下。 一、关于c++虚函数 虚函数使得c++能够实现多态,每个类有一个虚表,每个对象在实现的...

  • (Boolan) 面向对象高级编程(下)第四周笔记

    一、虚函数表 对C++虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来...

  • C++中的(纯)虚函数

    简介 本章节会介绍在C++中虚函数及纯虚函数的主要作用,C++也是通过虚函数实现动态绑定,本小节不会去讲述动态绑定...

网友评论

      本文标题:C++虚函数初步

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