<iostream.h>
class
CPolygon
{
protected:
int
width,
height
public:
void
set_values
(int
a,
int
b)
{
width=a
height=b
}
virtual
int
area
(void)
=0
}
class
CRectangle:
public
CPolygon
{
public:
int
area
(void)
{
return
(width
*
height)
}
}
class
CTriangle:
public
CPolygon
{
public:
int
area
(void)
{
return
(width
*
height
/
2)
}
}
int
main
()
{
CRectangle
rect
CTriangle
trgl
CPolygon
*
ppoly1
=
&rect
CPolygon
*
ppoly2
=
&trgl
ppoly1->set_values
(4,5)
ppoly2->set_values
(4,5)
cout
<<
ppoly1->area()
<<
endl
cout
<<
ppoly2->area()
<<
endl
return
0
}
本程序计算本输出矩形和三角形的面积,运行结果为:
20
10
上面的代码中,我们用基类CPolygon指针指向派生类CRectangle和CTriangle对象,没简陆调用派生类的area成员函数,而在main函数中枯顷输出area函数的计算结果。我们也可以在CPolygon类中定义一个成员函数,用于打印计算结果,而不管是哪一个派生类咐碰的area函数的计算结果。CPolygon类修改如下:
class
CPolygon
{
…
public:
…
void
printarea
(void)
{
cout
<<
this->area()
<<endl
}
}
并把main函数作如下修改:
int
main
()
{
…
ppoly1->printarea()
ppoly2->printarea()
return
0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)