【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )

news2024/11/20 12:31:29

文章目录

  • 一、面向过程编程
  • 二、查看 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 对象 , 则需要为其分配内存 , 该内存是在堆内存中的内存 ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDCX——运维开发准备

DD——运维开发准备 一4 linux用的什么版本&#xff0c;常见命令&#xff08;awk sed grep telnet netstate tcpdump top ps perf&#xff09;5 数据库有哪些类型&#xff0c;关系型数据库有哪些&#xff0c;非关系型数据库有哪些6 mysql事务7 mysql集群了解多少8 redis数据类型…

Spring 框架入门介绍及IoC的三种注入方式

目录 一、Spring 简介 1. 简介 2. spring 的核心模块 ⭐ 二、IoC 的概念 2.1 IoC 详解 2.2 IoC的好处 2.3 谈谈你对IoC的理解 三、IoC的三种注入方式 3.1 构造方法注入 3.2 setter方法注入 3.3 接口注入&#xff08;自动分配&#xff09; 3.4 spring上下文与tomcat整…

ChatGPT聊天微信小程序源码/适配H5和WEB端

ChatGPT-MP(基于ChatGPT实现的微信小程序&#xff0c;适配H5和WEB端) 可二开包含前后台&#xff0c;支持打字效果输出流式输出&#xff0c;支持AI聊天次数限制&#xff0c;支持分享增加次数等功能。开源版禁止商用&#xff0c;仅供学习交流&#xff0c;禁止倒卖。 技术栈&…

本地linux 搭建云服务器

本人穷逼&#xff0c;三年268 腾讯云可以接受&#xff0c;续费千百块 承担不起 研究了一会&#xff0c;发现搭建云服务器有两种较好的方式 一种是有公网IP的&#xff0c;另外是没有公网IP的&#xff0c;这里实验成功的是没有公网ip的方法 这种方法有缺点&#xff0c;因为fre…

前端组件高级封装技巧--纯干货

对于前端的小伙伴来说&#xff0c;最常见的工作就是写后台管理系统的页面&#xff0c;而后台管理系统最多的操作就是CRUD了&#xff0c;类似下面的&#xff0c;一个搜索框&#xff0c;一个表格&#xff0c;一个分页&#xff0c;然后点击新增编辑有个弹框 当你写过一段时间的CRU…

OpenDDS安装教程 Java开发

一、环境搭建 1、版本介绍 笔者使用以下版本&#xff08;不同版本的openDDS对应ACETAO版本不同&#xff09; openDDS&#xff1a;3.14 ACETAO&#xff1a;6.5.12 perl&#xff1a;5.32.0.1-64bit Visual Studio&#xff1a;Community 2019 jdk&#xff1a;jdk-8u111-windows-…

spark的standalone 分布式搭建

一、环境准备 集群环境hadoop11&#xff0c;hadoop12 &#xff0c;hadoop13 安装 zookeeper 和 HDFS 1、启动zookeeper -- 启动zookeeper(11,12,13都需要启动) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己写的脚本-- 查看进程 jps -- 有…

【CTF-web】备份是个好习惯(查找备份文件、双写绕过、md5加密绕过)

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/83.html 经过扫描可以找到index.php.bak备份文件&#xff0c;下载下来后打开发现是index.php的原代码&#xff0c;如下图所示。 由代码可知我们要绕过md5加密&#xff0c;两数如果满足科学计数法的形式的话&a…

centos7离线安装gdal3.6.3

本文档以纯离线环境为基础&#xff0c;所有的安装包都是提前下载好的。以gdal3.6.3为例&#xff08;其他版本安装步骤或方式可能不同&#xff09;&#xff0c;在centos7系统离线安装&#xff0c;并运行java项目&#xff0c;实现在java服务中调用gdal库解析地理数据。以下任意组…

python的 __all__ 用法

一、介绍 在Python中&#xff0c;__all__通常用于定义模块的公开接口。在使用from module import *语句时&#xff0c;此时被导入模块若定义了__all__属性&#xff0c;则只有__all__内指定的属性、方法、类可被导入&#xff1b;若没定义&#xff0c;则导入模块内的所有公有属性…

华为公开“倒装芯片封装”创新技术,改善散热性能,火龙秒变冰龙

根据华为技术有限公司公开的专利申请&#xff0c;他们提出了一项名为“具有改进的热性能的倒装芯片封装”的创新技术。这项技术旨在改善各种专利应用设备的散热性能&#xff0c;涉及的芯片类型包括CPU、GPU、FPGA和ASIC等。 这些设备可以是智能手机、平板电脑、可穿戴移动设备、…

CUDA计算超时(TDR)和阻塞界面问题的处理参考方法

本文提供一种解决单个英伟达独立显卡(终端用户常见的情形)上计算密集导致程序崩溃和电脑界面卡死的问题参考方法,采取降低效率和花费更多时间的思路来解决崩溃和卡顿的问题,即让CPU占有率不是一直100%,也不会因为被TDR机制打断。 如上图,在GPU-Z软件中看到“GPU Load”没…

实施统一待办:如何将“人找事变成事找人”

当企业信息化发展到一定程度&#xff0c;往往会呈现一种局面&#xff1a;专业的咖&#xff0c;管专业的事。如HRM管企业的人事信息、SRM管企业与供应商之间的合作关系、CRM管企业与客户之间的互动和沟通等。 然而当这些系统叠加在一起时&#xff0c;奇妙的化学反应产生了&#…

C#工程建立后修改工程文件名与命名空间

使用之前的项目做二次开发&#xff0c;项目快结束的时候&#xff0c;需要把主项目的名称修改成我们想要的。 之前从来没有这么干过&#xff0c;记录一下。 步骤如下&#xff1a; 1&#xff1a;打开vs2010项目解决方案&#xff0c;重命名&#xff0c;如下图所示&#xff1a; …

stack 、 queue的语法使用及底层实现以及deque的介绍【C++】

文章目录 stack的使用queue的使用适配器queue的模拟实现stack的模拟实现deque stack的使用 stack是一种容器适配器&#xff0c;具有后进先出&#xff0c;只能从容器的一端进行元素的插入与提取操作 #include <iostream> #include <vector> #include <stack&g…

猿人学刷题系列(第一届比赛)——第三题

题目&#xff1a;抓取下列5页商标的数据&#xff0c;并将出现频率最高的申请号填入答案中 地址&#xff1a;https://match.yuanrenxue.cn/match/3 本题主要考察请求逻辑&#xff0c;可以借助fiddler或Charles等抓包工具进行分析。首先通过浏览器来简单进行请求逻辑分析。 从抓…

Linux系统下消息中间件RocketMQ下载、安装、搭建、配置、控制台rocketmq-dashboard的安装保姆级教程 rocketmq ui

这里给出我使用的 RocketMQ 版本&#xff08;5.1.3&#xff09;、RocketMQ-Dashboard 版本的百度网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1HaKBBDGWZ0WKLGgVwIG9pw 提取码&#xff1a;1234 文章目录 一. 官网下载安装二、启动NameServer三、启动Broker四…

Linux学习之初识Linux

目录 一.Linux的发展历史及概念 1.什么是Linux UNIX发展的历史&#xff1a; Linux发展历史&#xff1a; 2. 开源 商业化发行版本 二. 如何搭建Linux环境 Linux 环境的搭建方式主要有三种&#xff1a; 1. 直接安装在物理机上 2. 使用虚拟机软件 3. 使用云服务器 三. …

4.SpringCloud

1.SpringCloud概述 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff0c;一次性令牌&#xff0c;全局锁&#xff0c;…

【游戏评测】河洛群侠传一周目玩后感

总游戏时长接近100小时&#xff0c;刚好一个月。 这两天费了点劲做了些成就&#xff0c;刷了等级&#xff0c;把最终决战做了。 总体感觉还是不错的。游戏是开放世界3D游戏&#xff0c;Unity引擎&#xff0c;瑕疵很多&#xff0c;但胜在剧情扎实&#xff0c;天赋系统、秘籍功法…