7.29虚函数的作用

本文通过一个C++示例介绍了虚函数的概念及其如何实现多态。示例中定义了Point基类及Rectangle和Circle派生类,并重写了Area方法来演示运行时多态。通过指向基类的指针调用派生类的方法,实现了不同类型对象间的统一接口调用。
虚函数的作用
#include <iostream>
using namespace std;
class Point
{public:
Point(double a = 0, double b = 0) {  x = a; y = b;   }
virtual double Area( ) 
{   cout << "Call Point's Area function." << endl;
return 0.0; 

protected:
double x, y;
};
class Rectangle: public Point
{public:
Rectangle(double a = 0, double b = 0, double c = 0, double d = 0): Point(a, b)
{   x1 = c; y1 = d;   }
double Area( )
{   cout << "Call Rectangle's Area function." << endl;
return (x1 - x)*(y1 - y); 
}
protected:
double x1, y1;
};
class Circle: public Point
{public:
Circle(double a = 0, double b = 0, double c = 0): Point(a, b){  r = c;  }
double Area( ) 
{   cout << "Call Circle's Area function." << endl;
return 3.14*r*r; 

protected:
double r; 
};
double CalcArea(Point &ref){  return(ref.Area( ) );  } 
int main( )
{
Point p(0, 0);
Rectangle r(0, 0, 1, 1);
Circle c(0, 0, 1);
cout << CalcArea(p) << endl;
cout << CalcArea(r) << endl;
cout << CalcArea(c) << endl;
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值