📜  C ++ |虚函数|问题10(1)

📅  最后修改于: 2023-12-03 15:13:45.318000             🧑  作者: Mango

C++ | 虚函数 | 问题10

在C++中,虚函数是一种被用来实现多态的机制。当基类中的成员函数被声明为虚函数时,子类可以重写该函数并实现自己的行为。使用虚函数可以允许代码动态地调用子类中的函数,而不是只能调用基类中的函数。

声明虚函数

在C++中,使用关键字virtual来声名一个虚函数。下面是一个基类Shape的例子:

class Shape {
public:
   virtual void draw() {
      cout << "I am a shape" << endl;
   }
};

在这个例子中,Shape类有一个虚函数draw()。可以看到,该函数前面有virtual关键字。

重写虚函数

在子类中,可以使用相同的函数名和参数列表来重写虚函数。下面是一个子类Rectangle的例子:

class Rectangle : public Shape {
public:
   void draw() {
      cout << "I am a rectangle" << endl;
   }
};

在这个例子中,Rectangle类重写了Shape类的draw()函数。

动态绑定

当使用虚函数时,C++会在运行时决定到底调用哪个函数。这个过程叫做动态绑定。下面是一个示例代码:

int main() {
   Shape *shape;
   Rectangle rect;
   shape = &rect;
   shape->draw();
   return 0;
}

在这个示例代码中,Shape指针被设置为指向Rectangle对象。在调用draw()函数时,C++会自动调用Rectangle类中的draw()函数。

总结

虚函数是一种实现多态的机制,可以允许代码动态地调用子类中的函数。声明虚函数需要使用关键字virtual,而重写虚函数需要使用相同的函数名和参数列表。动态绑定是C++自动调用合适的函数的机制。