c语言虚函数的作用,虚函数 - C++教程 - C语言网

首先引出,我们的新知识点—虚函数(virtual function)

这是一种什么函数呢? 简单讲,就是一个函数前面用virtual声明的函数,一般形式如下:

virtual 函数返回值  函数名(形参)

{

函数体

}

那它有什么用呢? 虚函数的出现,允许函数在调用时与函数体的联系在运行的时候才建立,即所谓的动态联编。那么在虚函数的派生类的运行时候,就可以在运行的时候根据动态联编实现都是执行一个方法,却出现不同结果的效果,就是所谓的多态。这样解决上一节的问题就有了办法。

接下来,我们只需要把基类中的area方法声明为虚函数,那么主函数中无论Point类型的指针还是引用就都可以大胆调用,无用关心类型问题了。因为他们会依据实际指向的对象类型来决定调用谁的方法,来实现动态联编。

代码如下:/**************************************

//Des:C++教程demo

//Author:Huang

//Copyright:www.dotcpp.com

//Date:2017/12/20

**************************************/

#include 

using namespace std;

#define PI 3.1415926

class Point

{

private:

int x,y;

public:

Point(int x=0,int y=0)

{

this->x = x;

this->y = y;

}

virtual double area()

{

return 0.0;

}

};

class Circle:public Point

{

private:

int r;

public:

Circle(int x,int y,int R):Point(x,y)

{

r = R;

}

double area()

{

return PI*r*r;

}

};

int main()

{

Point A(10,10);

cout<

Circle B(10,10,20);

cout<

Point *p;

p = &B;

cout<area()<

Point &pp=B;

cout<

return 0;

}

修改后编译运行如下:

c5850474f5b808f3cfc04b691dcaba30.png

大家请自行上机实验,体会虚函数及多态的作用。

需要注意的是:

1.   虚函数不能是静态成员函数,或友元函数,因为它们不属于某个对象。

2.   内联函数不能在运行中动态确定其位置,即使虚函数在类的内部定义,编译时,仍将看作非内联,

3.   构造函数不能是虚函数,析构函数可以是虚函数,而且通常声明为虚函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值