21xrx.com
2024-11-10 00:19:46 Sunday
登录
文章检索 我的文章 写文章
C++ 中的虚函数简介
2023-07-05 05:53:55 深夜i     --     --
C++ 虚函数 简介

虚函数是 C++ 语言中的一项重要特性,它允许在基类中声明一个函数为虚函数,然后在派生类中重新定义该函数,以实现多态性。虚函数通过将函数调用与实际调用的对象关联起来,可以在运行时确定应该调用哪个函数,从而实现了面向对象编程里的动态绑定。

在 C++ 中,通过在函数声明前加上 virtual 关键字来表示该函数为虚函数,如下所示:


class Shape{

public:

 virtual double area() = 0;

 virtual double perimeter() = 0;

};

上述代码中,Shape 类的 area() 和 perimeter() 函数都被定义为纯虚函数,表示该类是一个抽象基类,不能直接实例化。派生类必须重写这些函数。当然,也可以将虚函数定义为非纯虚函数。

在派生类中重写虚函数时,必须要保证函数签名与基类中的虚函数相同,否则会导致编译错误。例如,在下面的示例中,Circle 类继承自 Shape 类,并重新定义了 area() 函数:


class Circle: public Shape{

public:

 double area(){ return radius * radius * 3.14; }

private:

 double radius;

};

以上代码表示 Circle 类重新实现了 area() 函数,计算圆的面积并返回结果。这里需要注意的是,如果 Circle 类没有重新实现 area() 函数,那么在调用 Circle 实例的 area() 函数时,实际上会调用从 Shape 类继承下来的 area() 函数。

可以通过指向基类对象的指针或引用来动态绑定虚函数。例如,在下面的示例中,我们使用 Shape 类型的指针 p 指向一个 Circle 对象:


Shape *p = new Circle();

double area = p->area();

通过这种方式调用 area() 函数时,实际调用的是 Circle 类的 area() 函数。这是因为 p 指针指向的是一个 Circle 对象,而 Circle 类实现了 area() 函数,所以调用了 Circle 类的实现。

总之,虚函数是 C++ 中重要的面向对象编程特性,它可以实现多态性,使程序可以在运行时动态调用正确的函数。学习虚函数可以帮助程序员更好地理解多态性和继承的概念。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复