虚函数的作用
#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;
}
#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;
}