c++之旅——第四弹
大家好啊,这里是c++之旅第三弹,跟随我的步伐来开始这一篇的学习吧!
如果有知识性错误,欢迎各位指正!!一起加油!!
创作不易,希望大家多多支持哦!

本篇文章的主要内容有:学习C语言面向过程,C++面向对象,以及类和对象的使用
一,面向过程:
1.c语言编程就是一个面向过程的编程。它遵循一个“从上往下”的过程式程序设计方式
2.用面向过程的方式解决问题的思路:
首先提出问题,分析问题的处理流程,将大问题分解成小问题,如果小问题比较复杂,那么就继续的分解为更小的问题,然后解决这些一个一个的小问题来解决大问题,最后解决所有的问题(做好这一步,做下一步,直到做完所有)。
面向过程强调的是功能行为,以函数为最小单位,考虑怎么做
3.优缺点:
(1)优点:
、程序结构简单
、把问题拆分进而实现简单化
、使我们对整个逻辑结构清楚明了
(2)缺点:
、数据和操作往往是分离的
、数据不具有封装性(由于数据是公开的,若有其他人因失误改自己的数据的话,会影响自己的进展)
、多人协作开发时,不清楚别人的逻辑(导致只能一个一个按顺序做,无法实现同时开展工作,不利于多人协作开发)
二,面向对象:
1.面向对象的概念:
面向对象是相对于面向过程而言的。面向对象的程序设计是面向过程的继承和发展,程序对现实世界的抽象和描述,它认为现实世界是由对象组成的,无论大小,万物皆对象。
对象在程序中抽象为两个部分:① 描述对象的状态或者属性的数据(变量)② 描述对象的行为或者功能的方法(函数)
2.用面向对象的方式解决问题的思路:
(1)、根据问题的需要,选择问题所对应现实世界中的实体
(2)、从实体中找到解决问题的相关的属性和功能,这些属性和功能就形成了概念中的类
(3)、把概念中的类用计算机语言进行描述,形成计算机世界中类的定义,也就是使用某种编程语言,实现该类
(4) 、通过该类创建对象来解决问题
3.面向对象的特点:
(1)、封装性:将数据和行为结合在一起共同来表达一个数据(可以使各个对象模块相对分离,更有利于代码的维护和修改)
(2)、继承:可以使代码的扩展性好,有利于后期基于前期代码的扩展功能,即支持代码重用
(3)、多态:实现同一个东西在不同情况下实现不同操作
(4)、“高内聚、低耦合”:各模块相对分离,可以通过上一层来进行各模块间的连接或者用一个连接各模块的模块来实现模块间的连接
三,类:
1.类的介绍:
类是一种用户自定义数据类型,可以看作是 C 语言中结构体的升级版。类是由数据加功能构成的,也就是把变量和函数绑定在一起
2.定义方式:(和结构体类似)
class类名
{
访问属性:
类中成员,可以定义变量或函数
};
通过类定义的变量我们称之为对象
3.如何进行类的定义:
(1)、考虑类的目的
(2)、考虑类的属性和方法
(3)、考虑属性和方法的访问权限
(4) 、考虑类之间的关系和依赖
4.类的成员的访问属性:
(1)、访问属性关键字:
public:公有属性
protected:保护属性
private:私有属性
(2)、属性解释:
公有属性:类外和类中都可以被直接访问,类外通过对象访问
保护属性:类中及派生类中可以被直接访问 , 类外需要通过对象调用接口(实际上就是公有属性的函数)访问
私有属性:只有在类中才能被访问 , 类外需要通过对象调用接口访问
类中从有属性开始到下一个属性开始(若无下一个访问属性,就是到结尾处)都是上一个属性的控制范围,其中属性设置的个数是不限的,只不过不可以设置在成员函数里面
5.类中成员访问:(以下示例是访问公有属性下的函数,所以不会报错,如果是直接这样访问里面私有属性的变量数据,则会报错)
(1)、类对象通过“ .”访问成员:
student stu;
stu.fun();
(2)、类指针通过“->”访问成员:
student *p=new student;
p->fun();
6.c++中结构体和类的区别:
(1)、结构体的默认访问属性是公有,类是私有。
(2)、类中能写的结构体里也能写
(3)、结构体一般用于定义数据这样的类型,比如矩阵之类的(里面一般不定义函数);而类则一般用于定义实体类型(有数据也有相应操作(函数))
四,实际运用时对类的使用:
1.一般将类定义在头文件中,该头文件中一般写有类总体,类里面定义的变量以及函数的声明,函数的定义写在同名的源文件中
使用这种函数定义和声明在不同文件中时记得要写明类名(在函数名前),相当于命名空间类似的操作:
分文件操作举例:
people.h头文件中的内容:
#pragma onceclass CPeople{int x, y;public:void setPoint(int px, int py);int getX()//直接返回这种简单函数就不必分文件编写了{return x;}int getY()//直接返回这种简单函数就不必分文件编写了{return y;}};
同名源文件中的内容:
#include "people.h"//上面头文件叫people.hvoid CPeople::setPoint(int px, int py){x = px;y = py;}
2.#pragma once:写在头文件开头,用于表示该头文件只引用一次(c++写法),C语言中用#ifndef来只导一次
3.程序运行的过程:
使用了分文件编写了,那么现在来了解一下程序在包含头文件时的执行过程:
(1),先是预处理(宏替换和引用头文件),引用头文件的目的是包含头文件中的内容,使头文件和源文件一起进行编译过程(头文件都是伴随着源文件来进行编译的而不是独立编译)
(2),编译:生成.obj二进制目标文件(是源文件生成的,头文件不会生成,头文件对应的定义函数的源文件也是可以生成的),因为.obj文件有大小,头文件里面是类类型的定义和函数的声明,是没有大小的,所以不可以生成有内存的文件
(3),链接:将.obj文件分区块进行拷贝,拷贝至一起,链接形成一个.exe可执行文件
相关文章:
c++之旅——第四弹
大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 本篇文章的主…...
Mysql整理-主从复制
MySQL的主从复制是一种常见的数据复制和分布式数据共享方法。在这种架构中,一个MySQL服务器充当主(master)服务器,而一个或多个其他MySQL服务器充当从(slave)服务器。数据从主服务器复制到从服务器,实现数据的分布和备份。这种设置主要用于数据备份、读取扩展、灾难恢复…...
100个百万阅读公众号爆文案例
100个100万公众号爆文案例 自从公众号流量推送修改之后,原来的私域玩法一去不复返,公域公众号正在崛起 现在公众号的玩法就是找爆款,去对标,去学习,努力使自己的公众号进入流量池,然后吃流量主的收益 这里…...
UnityAPI的学习——Transform类
Transform类继承自Component类,并实现了IEnumberable接口。Transform是GameObject必须拥有得一个组件,用来管理所在GameObject对象的坐标位置、选择角度、和大小缩放。 Transform实现了IEnumberable接口,因此可以在程序中使用foreach()方法快…...
(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载(完整版下载) (1)研究生英语读写教程基础级教师用书PDF (2)研究生英语读写教程基提高级教师用书PDF...
GO基本类型
Go语言同时提供了有符号和无符号的整数类型。 有符号整型:int、int8、int64、int32、int64无符号整型:uint、uint8、uint64、uint32、uint64、uintptr 有符号整型范围:-2^(n-1) 到 2^(n-1)-1 无符号整型范围: 0 到 2^n-1 实际开发中由于编…...
怎么快速编辑视频
背景:怎么简单快速编辑视频 利用FFmpeg功能,简单快速编辑视频,如按9:16提前剪切视频、替换背景音乐。 下载FFmpeg:https://ffmpeg.org/download.html 将FFmpeg的路径添加到环境变量中: Windows:在系统的环…...
基于vue-office实现docx、xlsx、pdf文件的在线预览
概述 在做项目的时候会遇到docx、xlsx、pdf等文件的在线预览需求,实现此需求可以有多种解决方式,本文基于vue-office实现纯前端的文件预览。 效果 如下图,分别为docx、xlsx、pdf三种类型的文件在线加载后的效果。你也可以访问官方预览网址…...
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...
51单片机-(中断系统)
51单片机-(中断系统) 了解51单片机中断系统、中断源、中断响应条件和优先级等,通过外部中断0实现按键控制LED亮灭为例理解中断工作原理和编程实现过程。 1.中断系统结构 89C51/52的中断系统有5个中断源 ,2个优先级,…...
c++之旅——第三弹
大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.命名空间;…...
GO—函数
Go 语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 Go 语言的函数属于“一等公民”(first-class),也就是说: 函数本身可以作为值进行传递。支持匿名函数和闭…...
[WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%
ForgeUI的github主页地址:https://github.com/lllyasviel/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于Stable Diffusion WebUI(基于Gradio)的平台,可简化开发、优化资源管理并加快推理速度。 “Forge”这个名字的灵感来自于“Minecraft Forge”…...
高刷显示器 - HKC VG253KM
🔥🔥 今天来给大家揭秘一款电竞神器 - HKC VG253KM 高刷电竞显示器!这款显示器可是有着雄鹰展翅般的设计灵感,背后的大鹏展翅鹰翼图腾让人过目难忘。那么,这款显示器到底有哪些过人之处呢?一起来看看吧&…...
javascript实现的星座查询
今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果,想研究一下代码,结果右键禁用。后来参考了一下别人的代码,琢磨着先实现了一下星座查询的功能,输入月份和日期四位数后,可以查询属于哪个星座…...
全国青少年软件编程(Python)等级考试试卷(一级) 测试卷2021年12月
第 1 题 【 单选题 】 下面程序的运行结果是什么?( ) a10 b5 ca*b print(c) A :10 B :15 C :50 D :5 正确答案:C 试题解析: 第 2 题 【 单选题 】 与a>b and b>c等价的是?( ) A…...
昇腾ACL应用开发之硬件编解码dvpp
1.前言 在我们进行实际的应用开发时,都会随着对一款产品或者AI芯片的了解加深,大家都会想到有什么可以加速预处理啊或者后处理的手段?常见的不同厂家对于应用开发的时候,都会提供一个硬件解码和硬件编码的能力,这也是抛…...
MFC 模态对话框退出机制的探究
一位读者问了这样一个问题: ” 如果我创建了一个可见的模态对话框,却对用户来说不可用。举个例子,假设我在程序中的其他位置收到一个事件,并且我从事件中调用模态 CDialog 上的 DestroyWindow。我注意到 OnDestroy 是在 CDialog 上调用的,但在将 WM_QUIT 消息发送到模态对…...
Android13 framework添加关机接口
framework层修改: t0_sys/frameworks/base/core/api/current.txt method RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(Nullable String);method public void rebootp();t0_sys/frameworks/base/core/java/android/os/IPowerManager…...
如何使用ArcGIS Pro为栅格图添加坐标信息
在某些时候,我们从网上获取的资源是一张普通的栅格图,没有任何的坐标信息,如果想要和带坐标信息的数据一起使用就需要先添加坐标信息,在GIS上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
