question 1 Circle::Circle(float r) { //构造函数初始化数据成员radius
radius = r; radius = r; 不是多此一举吗? 这个构造函数的意义和作用是什么?
question 2 输入结果为10 输出结果与想法不一致(fenceCost为0),输出结果如下图,求解释代码哪里出了问题?
question 3 私有接口成员中一般放什么?
question 4 Circle pool(radius);
Circle poolRim(radius + 3);这两个语句的含义及其作用?
question 5 此语句的含义是什么? poolRim.circumference()
// 4-3游泳池改造预算,Circle类.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include<iostream>
using namespace std;
const float PI = 3.141593;//给出圆周率的值
const float FENCE_PRICE = 35;//栅栏的单价
const float CONCRETE_PRICE = 20;//过道水泥的单价
float r;
class Circle { //声明定义类Circle及其数据和方法
public: //外部接口
Circle(float r); //构造函数
float circumference(); //计算圆的周长
float area(); //计算圆的面积
private: //私有接口成员
float radius; //圆的半径
};
Circle::Circle(float r) { //构造函数初始化数据成员radius
radius = r;
}
//计算圆的周长
float Circle::circumference() {
return PI * 2 * r;
}
//计算圆的面积
float Circle::area() {
return PI * radius * radius;
}
int main() {
float radius;
cout << "Enter the radius of the pool:";//提示用户输入半径
cin >> radius;
Circle pool(radius); //游泳池边界
Circle poolRim(radius + 3); //栅栏对象
//计算栅栏对象并输出
float fenceCost = poolRim.circumference() * FENCE_PRICE;
cout << "Fence Cost is $" <<fenceCost<< endl;
//计算过道造价并输出
float concreteCost = (poolRim.area() - pool.area()) * CONCRETE_PRICE;
cout << "Concrete Cost is $" << concreteCost << endl;
}
输入的是10 输出结果如图

1.r是构造函数传入的参数,它的生命周期在构造函数执行完毕就结束了
如果你想在别的函数里调用它,它早没了,那你就当然的要用一个全局变量来把它保存住
2.你后面的函数里应该使用radius ,因为你保存在这里了,但是你错误的使用了r
r作为传入参数,你不要再定义一个全局变量也叫r了,容易把自己整不会了
3.不明白你想表达什么
4.Circle pool(radius)定义了一个圆,名字叫pool,半径是radius
Circle poolRim(radius + 3)是另一个圆,名字叫poolRim,半径是radius + 3
5.就是调用Circle::circumference获取圆周长呀,但是因为你里面错误的使用了r,所以只能返回0