C++——虚函数
virtual关键字
在C++中, virtual 和 override 关键字用于支持多态,尤其是在涉及类继承和方法重写的情况下。正确地理解和使用这两个关键字对于编写可维护和易于理解的面向对象代码至关重要。
virtual关键字
1.使用场景:在基类中声明虚函数。
-
目的:允许派生类重写该函数,实现多态。
-
行为:当通过基类的指针或引用调用一个虚函数时,调用的是对象实际类型的函数版本。
-
示例:
class Base {public:virtual void func() {std::cout << "Function in Base" << std::endl;}
};
override 关键字
-
使用场景:在派生类中重写虚函数。
-
目的:明确指示函数意图重写基类的虚函数。
-
行为:确保派生类的函数确实重写了基类中的一个虚函数。如果没有匹配的虚函数,编译器会报错。
-
示例:
class Derived : public Base {public:void func() override {std::cout << "Function in Derived" << std::endl;}
};
例程
#include <iostream>using namespace std;class Vehicle{ //交通工具,车,抽象的概念
public:string coutry;double price;Vehicle(){}virtual ~Vehicle(){};Vehicle(string coutry,double price){cout<<"基类构造函数被调用"<<endl;this->coutry=coutry;this->price=price;};//基类中声明了一个虚函数virtual void run(){cout << "车跑起来了" << endl;}void stop();
};class Bike:public Vehicle
{
public:void run() override{cout<<"脚踩自行车"<<endl;}
};int main()
{Bike b;b.run();return 0;
}