类和对象——实验二
作者:miaomiao
题出自某高校实验作业题
一、实验内容
定义一个 圆类(Circle)
,要求用两种方法定义:
方法1:要求属性为半径,操作为计算圆的周长和面积。
方法2:要求属性为半径( radius )、圆周长和面积,操作为输出半径、周长和面积。
要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和复制构造函数。
二、解答
方法1:
定义类的代码
class Circle {
private:
double radius;
public:
Circle(double r);
~Circle() {};
void Area();
void Perimeter();
};
类中成员函数的实现
Circle::Circle(double r) {
radius = r;
}
void Circle::Area() {
cout << "面积 = " << PI * radius*radius << endl;
}
void Circle::Perimeter() {
cout << "周长 = " << 2 * PI*radius << endl;
}
完整程序
#include<iostream>
#include<iomanip>
using namespace std;
const double PI = 3.1415; //定义一个常量
class Circle {
private:
double radius;
public:
Circle(double r);
void Area();
void Perimeter();
};
Circle::Circle(double r) {
radius = r;
}
void Circle::Area() {
cout << "面积 = " << PI * radius*radius << endl;
}
void Circle::Perimeter() {
cout << "周长 = " << 2 * PI*radius << endl;
}
int main() {
Circle cir1(10.5);
cout << fixed << setprecision(3); //iomanip库函数,作用使输出保留3位小数
cir1.Area(); cir1.Perimeter();
cout.unsetf(ios_base::fixed); //关闭3位小数的显示要求
return 0;
}
方法2:
定义类的代码
class Circle {
private:
double radius, area, perimeter;
public:
Circle(double r = 0);
Circle(Circle &c);
void Show();
};
类中成员函数的实现
Circle::Circle(double r) {
radius = r;
area = PI * r*r;
perimeter = 2 * PI*r;
}
Circle::Circle(Circle &c) {
radius = c.radius;
area = c.area;
perimeter = c.perimeter;
}
void Circle::Show() {
cout << fixed << setprecision(3) << "半径 = " << radius << ", 面积 = " << area << ", 周长 = " << perimeter << endl;
}
完整程序
#include<iostream>
#include<iomanip>
using namespace std;
const double PI = 3.1415;
class Circle {
private:
double radius, area, perimeter;
public:
Circle(double r = 0);
Circle(Circle &c);
void Show();
};
Circle::Circle(double r) {
radius = r;
area = PI * r*r;
perimeter = 2 * PI*r;
}
Circle::Circle(Circle &c) {
radius = c.radius;
area = c.area;
perimeter = c.perimeter;
}
void Circle::Show() {
cout << fixed << setprecision(3) << "半径 = " << radius << ", 面积 = " << area << ", 周长 = " << perimeter << endl;
}
int main() {
Circle cir(10.5);
cir.Show();
Circle cir1(cir);
cir1.Show();
return 0;
}