文章目录
- 一、面向过程编程
- 二、查看 iostream 依赖
- 三、面向对象编程
一、面向过程编程
给定 圆 的 半径 , 求该圆 的 周长 和 面积 ;
半径为 r r r , 周长就是 2 π r 2 \pi r 2πr , 面积是 π r 2 \pi r^2 πr2 ;
使用 面向过程 的方法解决上述问题 , 只能是令程序顺序执行 , 如果要求多个圆的面积 , 则需要重复执行过程代码 ;
代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
int main()
{
// 定义圆半径 , 周长 , 面积 对应的变量
double r = 0, p = 0, a = 0;
// 提示输入圆半径
cout << "输入圆半径 :" << endl;
// 从命令行标准输入得到的数据 到 变量 r 指示的内存空间中
cin >> r;
cout << "接收到圆半径 :"<< r << endl;
// 计算圆周长
p = 3.14159 * 2 * r;
// 计算圆面积
a = 3.14159 * r * r;
// 打印计算结果
cout << "圆周长为 :" << p << " 圆面积为 : " << a << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
}
执行结果 : 输入半径 10 , 计算出了对应的周长 和 面积 ;
输入圆半径 :
10
接收到圆半径 :10
圆周长为 :62.8318 圆面积为 : 314.159
Press any key to continue . . .
二、查看 iostream 依赖
在上个章节的代码中 , 使用了 cout 和 cin 两个标准流 ,
- 将数据输出到 cout 标准输出流中 , 使用 cout << 输出内容 实现 ;
- 将数据从 cin 标准输入流中读取到内存中, 使用 cin >> 内存空间 实现 ;
<< 是输出数据到输出流中 , >> 是输入数据到内存中 ;
记住的方法是 : 标准流 cin 和 cout 始终在 左边 , << 和 >> 是 数据的方向 ;
cin 和 cout 都定义在 iostream 中 , 可以在 Visual Studio 2019 的 解决方案资源管理器 中的 项目下的 " 外部依赖 " 中查看 iostream 标准流 定义 ;
双击 展开 " 外部依赖项 " , 可以查看 iostream 的完整代码 ;
三、面向对象编程
给定 圆 的 半径 , 求该圆 的 周长 和 面积 ;
半径为 r r r , 周长就是 2 π r 2 \pi r 2πr , 面积是 π r 2 \pi r^2 πr2 ;
使用 面向对象 的 方式 , 解决上述问题 ;
- 首相 , 将 事物 进行抽象 , 这里将 圆 定义为一个 数据类型 ;
- 然后 , 在 圆 类型中 , 定义 成员属性 半径 , 周长 , 和 面积 ;
- 最后 , 在 圆 类型中 , 定义两个 成员函数 , 分别根据 半径 求出 周长 和 面积 ;
代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
class Circle
{
public:
double r; // 成员变量 半径
double p; // 成员变量 周长
double a; // 成员变量 面积
// 成员方法 设置半径
void setR(double r1)
{
r = r1;
}
// 成员方法 计算圆周长和面积
void caculate()
{
p = 3.14159 * r * 2;
a = 3.14159 * r * r;
}
// 获取圆周长
double getP()
{
return p;
}
// 获取圆面积
double getA()
{
return a;
}
private:
protected:
};
int main()
{
// 定义圆对象
Circle c;
double r;
// 提示输入圆半径
cout << "输入圆半径 :" << endl;
// 从命令行标准输入得到的数据 到 变量 r 指示的内存空间中
cin >> r;
cout << "接收到圆半径 :"<< r << endl;
// 给 圆 对象 c 设置半径
c.setR(r);
// 计算圆 周长 和 面积
c.caculate();
// 打印计算结果
cout << "圆周长为 :" << c.getP() << " 圆面积为 : " << c.getA() << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
}
执行结果 :
输入圆半径 :
10
接收到圆半径 :10
圆周长为 :62.8318 圆面积为 : 314.159
Press any key to continue . . .
在上述代码中 , 定义了 Circle 类 ,
class Circle
{
...
}
此时 Circle 是一个数据类型 , 编译器并没有为其分配内存 ;
定义 Circle 对象 c 时 , 才为该 c 对象在 内存中分配内存 , 注意该内存是在 栈内存 中分配内存 ;
// 定义圆对象
Circle c;
如果定义 Circle *c 对象 , 则需要为其分配内存 , 该内存是在堆内存中的内存 ;