C++虚函数初步

2017-02-28  本文已影响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将其变为虚函数就行啦

上一篇 下一篇

猜你喜欢

热点阅读