C++菜鸟求救 大侠帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:27:09
分数有限
见谅
#include <iostream>
using namespace std;
class shape
{
public:
virtual float area() const {return 0.0;}
virtual void shapename() const=0; ///////纯虚函数
};

class circle:public shape
{
protected:
float r;
public:
circle(float a=0):r(a){}
float area(){return 3.1415*r*r;}
virtual void shapename(){cout<<"circle";}
};

class juxing:public shape
{
protected:
float x,y;
public:
juxing(float a,float b):x(a),y(b){}
float area(){return x*y;}
virtual void shapename(){cout<<"juxing";}
};

class sanj:public shape
{
protected:

float x,y,z;
public:
sanj(float a,float b,float c):x(a),y(b),z(c){}
float area();
virtual void shapename(){cout<<"sanj";}
};
float sanj::area()
{
if((x+y>z&&(x+z)>y&&

>>根本就不调用 area函数
谁说没调用area函数阿? 你输出一下就知道了:
cout<< "area=" << pt->area() <<endl;

pt=&circle; >>应该是 p=&c; 吧

自己看吧,修改后的代码:

#include <iostream>
using namespace std;
class shape
{
public:
virtual float area() const {return 0.0;}
virtual void shapename() const=0; ///////?虚函数
};

class circle:public shape
{
protected:
float r;
public:
circle(float a=0):r(a){}
float area() const {return 3.1415*r*r;}
virtual void shapename() const {cout<<"circle";}
};

class juxing:public shape
{
protected:
float x,y;
public:
juxing(float a,float b):x(a),y(b){}
float area() const {return x*y;}
virtual void shapename() const {cout<<"juxing";}
};

class sanj:public shape
{
protected:

float x,y,z;
public: