可是我并没有缺少构造函数,不知道是否是继承时候出了问题,麻烦大家帮忙看看。
错误 C2512 “Rectangle”: 没有合适的默认构造函数可用
题目:
建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle正方形Square类,求出面积,周长
#include<iostream>
#define pi 3.14
using namespace std;
class Shape
{
public:
Shape();
virtual double Area();
virtual double Zhou();
~Shape();
};
class Circle :public Shape
{
private:
float r;
public:
Circle(float R)
{
r = R;
}
double Area() {
return pi * r * r;
}
double Zhou() {
return 2 * pi * r;
}
};
class Rectangle:public Shape
{private:
float length, width;
public:
Rectangle(float len, float wid)
{
length = len, width = wid;
}
double Area()
{
return length * width;
}
double Zhou() {
return 2 * (width + length);
}
};
class Square :public Rectangle
{
private:
float side;
public:
Square(float Side)
{
side = Side;
}
double Area()
{
return side * side;
}
double Zhou()
{
return 4 * side;
}
};
int main()
{
char shape[9];
cout << "Please input shape:" << endl;
cin >> shape;
if (shape == "circle")
{
float r;
cout << "Please input r:" << endl;
Circle c(r);
c.Area();
cout << "圆的面积为:" << c.Area() << endl;
c.Zhou();
cout << "圆的周长为:" << c.Zhou() << endl;
}
else if (shape == "rectangle")
{
float len, wid;
cout << "Please input len,wid:" << endl;
cin >> len;
cin >> wid;
Rectangle t(len, wid);
t.Area();
t.Zhou();
cout << "矩形的面积为:" << t.Area() << endl;
cout << "矩形的周长为:" << t.Zhou() << endl;
}
else if (shape == "square")
{
float side;
cout << "Please input side:" << endl;
cin >> side;
Square s(side);
s.Area();
s.Zhou();
cout << "正方形面积为:" << s.Area() << endl;
cout << "正方形周长为:" << s.Zhou() << endl;
}
}
#include<iostream>
#include<cstring>
#define pi 3.14
using namespace std;
class Shape
{
public:
Shape() {}
virtual double Area() = 0;
virtual double Zhou() = 0;
~Shape() {}
};
class Circle :public Shape
{
private:
float r;
public:
Circle(float R)
{
r = R;
}
double Area() {
return pi * r * r;
}
double Zhou() {
return 2 * pi * r;
}
};
class Rectangle:public Shape
{private:
float length, width;
public:
Rectangle(float len, float wid)
{
length = len, width = wid;
}
double Area()
{
return length * width;
}
double Zhou() {
return 2 * (width + length);
}
};
class Square :public Rectangle
{
private:
float side;
public:
Square(float Side) : Rectangle(Side, Side)
{
side = Side;
}
double Area()
{
return side * side;
}
double Zhou()
{
return 4 * side;
}
};
int main()
{
char shape[20];
cout << "Please input shape:" << endl;
cin >> shape;
if (strcmp(shape, "circle") == 0)
{
float r;
cout << "Please input r:" << endl;
Circle c(r);
cout << "圆的面积为:" << c.Area() << endl;
cout << "圆的周长为:" << c.Zhou() << endl;
}
else if (strcmp(shape, "rectangle") == 0)
{
float len, wid;
cout << "Please input len,wid:" << endl;
cin >> len;
cin >> wid;
Rectangle t(len, wid);
cout << "矩形的面积为:" << t.Area() << endl;
cout << "矩形的周长为:" << t.Zhou() << endl;
}
else if (strcmp(shape, "square") == 0)
{
float side;
cout << "Please input side:" << endl;
cin >> side;
Square s(side);
s.Area();
s.Zhou();
cout << "正方形面积为:" << s.Area() << endl;
cout << "正方形周长为:" << s.Zhou() << endl;
}
}