解释代码class CShape { public: double r ; double s ; public: CShape(double x) { r=x; } // 声明纯虚函数 virtual float Area()=0; };
时间: 2023-05-17 22:05:49 浏览: 97
这段代码定义了一个抽象类 CShape,其中包含一个成员变量 r 和一个纯虚函数 Area()。构造函数 CShape(double x) 初始化了 r 的值。由于 Area() 是纯虚函数,因此 CShape 是一个抽象类,不能被实例化。任何继承 CShape 的子类都必须实现 Area() 函数,否则也会成为抽象类。
相关问题
图形类的继承与派生(图形类派生出正方形类和圆类) (1)定义CShape类 操作: 求面积的纯虚函数virtual double area( ) =0; 输出的纯虚函数virtual void print( ) =0; (2)定义正方形类CSquare,公有继承CShape类 操作: 构造函数、setEdge、getEdge、求面积的虚函数virtual double area( ) ;输出的虚函数virtual void print( ) ;等 数据: 成员变量edge作为正方形的边长 (3)定义圆类CCircle,公有继承CShape类 操作: 构造函数、setRadius、getRadius、求面积的虚函数virtual double area( ) ;输出的虚函数virtual void print( ) ;等 数据: 成员变量radius作为圆的半径 (4)定义主函数,对正方形类CSquare和圆类CCircle的功能进行测试。
以下是代码示例:
```cpp
#include <iostream>
using namespace std;
class CShape {
public:
virtual double area() = 0; // 求面积的纯虚函数
virtual void print() = 0; // 输出的纯虚函数
};
class CSquare : public CShape {
public:
CSquare(double edge) : edge(edge) {} // 构造函数
void setEdge(double edge) { this->edge = edge; }
double getEdge() { return edge; }
virtual double area() { return edge * edge; } // 求面积的虚函数
virtual void print() { cout << "正方形,边长为" << edge << ",面积为" << area() << endl; } // 输出的虚函数
private:
double edge; // 正方形的边长
};
class CCircle : public CShape {
public:
CCircle(double radius) : radius(radius) {} // 构造函数
void setRadius(double radius) { this->radius = radius; }
double getRadius() { return radius; }
virtual double area() { return 3.14 * radius * radius; } // 求面积的虚函数
virtual void print() { cout << "圆形,半径为" << radius << ",面积为" << area() << endl; } // 输出的虚函数
private:
double radius; // 圆的半径
};
int main() {
CSquare square(5);
square.print();
CCircle circle(3);
circle.print();
return 0;
}
```
输出结果:
```
正方形,边长为5,面积为25
圆形,半径为3,面积为28.26
```
用Cshape 按照以下要求设计接口lArea、长方形类Rectangle、正方形类Square、圆形类Circle,最终在主函数中输出长方形、正方形及圆形面积。 1.接口IArea,包含:计算面积的方法double Area(); 2.类Rectangle、类Square、类Circle 继承接口,包含: ①自动属性; ②构造函数(能判断对应参数的合理性(如:x>0)); ③实现计算面积的方法Area(); 3. 主函数中,创建三个对象(如下: ), 分别调用方法Area(), 输出三种图形的面积。
以下是代码示例:
```csharp
using System;
// 定义接口
interface IArea {
double Area();
}
// 定义长方形类
class Rectangle : IArea {
// 自动属性
public double Width { get; }
public double Height { get; }
// 构造函数
public Rectangle(double width, double height) {
if (width <= 0 || height <= 0) {
throw new ArgumentException("长方形的宽和高必须大于0");
}
Width = width;
Height = height;
}
// 实现计算面积的方法
public double Area() {
return Width * Height;
}
}
// 定义正方形类
class Square : IArea {
// 自动属性
public double Side { get; }
// 构造函数
public Square(double side) {
if (side <= 0) {
throw new ArgumentException("正方形的边长必须大于0");
}
Side = side;
}
// 实现计算面积的方法
public double Area() {
return Side * Side;
}
}
// 定义圆形类
class Circle : IArea {
// 自动属性
public double Radius { get; }
// 构造函数
public Circle(double radius) {
if (radius <= 0) {
throw new ArgumentException("圆的半径必须大于0");
}
Radius = radius;
}
// 实现计算面积的方法
public double Area() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main(string[] args) {
// 创建三个对象
Rectangle rectangle = new Rectangle(3, 4);
Square square = new Square(5);
Circle circle = new Circle(2);
// 输出三种图形的面积
Console.WriteLine($"长方形的面积为:{rectangle.Area()}");
Console.WriteLine($"正方形的面积为:{square.Area()}");
Console.WriteLine($"圆形的面积为:{circle.Area()}");
}
}
```
输出结果为:
```
长方形的面积为:12
正方形的面积为:25
圆形的面积为:12.566370614359172
```
阅读全文