C++虚函数初步

刚开始接触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将其变为虚函数就行啦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次...
    踩在浪花上00阅读 3,352评论 0 1
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,166评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 8,098评论 0 3
  • C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...
    小白将阅读 5,696评论 4 19
  • 那段时间,李白在长安混得很不好,整天喝酒玩乐发牢骚。什么“大道如青天,我独不得出”啦,什么“停杯投箸不能食,拔剑四...
    池塘之底阅读 11,924评论 9 33

友情链接更多精彩内容