题目
设计一个圆类 Circle,包含常量数据成员 Pi、非常量数据成员半径 r、面积 s、常成员函数 printArea 用于输出面积和非常成员函数 getArea 用于计算面积。创建两个该类的常对象和非常对象,尝试通过这两个对象调用两个成员函数,并在代码注释中解释发生了什么以及为什么
代码
head.h
class Circle
{
public:
Circle(float);
void getArea();
float printArea() const;
private:
const float pi = 3.1415926;
float r,s;
};
head.cpp
#include"head.h"
Circle::Circle(float a)
{
r=a;s=0;
}
void Circle::getArea()
{
s=pi*r*r;
}
float Circle::printArea() const
{
return s;
}
main.cpp
#include<iostream>
#include"head.h"
using namespace std;
int main()
{
float r1,r2;
cout << "请输入两个圆的半径"<<endl;
cin >> r1>>r2;
Circle round1(r1);//非常对象
const Circle round2(r2);//常对象
round1.getArea();//计算面积
cout << "圆1的面积:"<<round1.printArea()<<endl;//输出计算后的面积
round2.getArea();//error,常对象不能调用非常成员函数
cout << "圆2的面积:"<<round2.printArea()<<endl;//输出默认初始化的面积
return 0;
}