c++继承提问

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:27:14
Square的实现不对,请问是哪一步错了
//定义一个基类shape,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积。
//再使用Rectangle类创建一个派生类Square。
#include<iostream>
using namespace std;
class shape
{
protected:
float a,b;
};

class Rectangle:public shape
{
public:
Rectangle(float a,float b)
{
this->a=a;
this->b=b;
}

void GetArea()
{
cout<<"area:"<<a*b<<endl;
}
};

class Circle:public shape
{
public:
Circle(float a)
{
this->a=a;
}
void GetArea()
{
const float PI=3.14;
cout<<"area:"<<PI*a*a<<endl;
}
};

class Square:public Rectangle
{
public:
Square(float x)
{
a=x;
b=x;
}
};
int main()
{
Rectangle a(2,3);
a.GetArea();
Circle b(2);
b.GetArea();

#include<iostream>
using namespace std;
class shape
{
protected:
float a,b;
};

class Rectangle:public shape
{
public:
Rectangle(float a,float b)
{
this->a=a;
this->b=b;
}
Rectangle()//这里 如果Rectangle缺少一个无参数的构造 则下面Square将无法初始化
{
}

void GetArea()
{
cout<<"area:"<<a*b<<endl;
}
};

class Circle:public shape
{
public:
Circle(float a)
{
this->a=a;
}
void GetArea()
{
const float PI=3.14;
cout<<"area:"<<PI*a*a<<endl;
}
};

class Square:public Rectangle
{
public:
Square(float x)
{
a=x;
b=x;
}
};
int main()
{
Rectangle a(2,3);
a.GetArea();
Circle b(2);
b.GetArea();
Square c(3);
c.GetArea();
return 0;<