请按要求编写一个类Circle,用于描述一个圆形,并用给定的main函数测试Circle类的功能。Circle类的要求如下:
1. 包含圆形编号、圆心x坐标、圆心y坐标和半径等数据成员。圆形编号为整形。生成第1个圆形对象时编号为1,生成第2个圆形对象时编号为2,以此类推。每构造一个新的圆形,对象编号为当前最大编号加1(如当前最大编号为5,则生成的这个新圆形的编号应该为6)。
2. 是否需要其它数据成员,可视情况自行决定。提示:建议使用两个静态变量。一个静态变量用于记录当前圆形对象的个数,此变量的值可增大或减小;另一个静态变量用于记录已经生成的圆形对象的最大编号,此变量的值只会增大不会减小。
3. 1个带有3个参数的构造函数。3个参数分别初始化圆形的圆心x坐标、圆心y坐标和半径等数据成员。提示:圆形对象的编号也需要初始化。
4. 1个拷贝构造函数。提示:圆形对象的编号不能简单复制。
5. 1个获取当前圆形对象数量的函数。提示:此函数建议为静态函数。
6. 前自增运算符,对半径自增1。
7. 后自增运算符,对半径自增1。
8. +运算符,用于将两个圆形加在一起,得到一个新的圆形。新圆形的圆心坐标是两个圆形坐标连线的中点,面积是两个圆形面积的和。提示:需要根据面积反算半径。
9. 流输出运算,用于显示圆形的编号、圆心x坐标、圆心y坐标和半径、面积、周长。一个圆形的信息占1行。
10. 析构函数。圆形对象销毁时,需要将当前圆形对象的数量减去1。
11. 使用给定的main函数测试Circle类的功能。
程序的main函数(注意:不得修改main函数!对main函数每修改一处,总分扣2分,最多扣10分。)
int main()
{
Circle c1( 1.12, 2.23, 3.34 ), c2( c1 );
cout << c1 << c2;
cout << "Number of circles = " << Circle::get_num() << endl;
Circle c3 = c1 + c2;
cout << c3;
cout << "Number of circles = " << Circle::get_num() << endl;
cout << c1++;
cout << ++c2;
cout << c1;
return 0;
}