Martin,能否帮忙解释一下下面程序中的疑问:
#include <iostream.h>
class CShape
{
public:
float area(){ return 0.0;}
};
class CTriangle : public CShape
{
public:
CTriangle(float h = 0, float w = 0)
{ H = h; W = w; }
float area()
{ return (float)(H * W * 0.5); }
private:
float H, W;
};
class CCircle : public CShape
{
public:
CCircle(float r = 0)
{ R = r; }
float area()
{ return (float)(3.14159265 * R * R); }
private:
float R;
};
int main()
{
CTriangle tri( 3, 4 );
cout<<"tri.area() = "<<tri.area()<<endl;
CCircle cir(5);
cout<<"cir.area() = "<<cir.area()<<endl;
CShape *s1 = &tri;
cout<<"s1->area() = "<<s1->area()<<endl; CShape &s2 = cir;
cout<<"s2.area() = "<<s2.area()<<endl;
return 0;
}
运行结果中s1->area()调用的竟然是CShape的成员函数area
如何理解CShape *s1=&tri?谢谢!