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上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…...
Java响应式最后一公里:Loom原生支持下的WebMvc→WebFlux渐进式迁移路线图(仅限首批内测团队获取)
第一章:Java响应式编程转型的范式跃迁与Loom时代使命传统阻塞式I/O模型在高并发场景下遭遇线程资源瓶颈,而Project Reactor与RSocket等响应式生态组件推动Java从“以线程为中心”转向“以事件流为中心”的范式跃迁。这一转变不仅重构了异步数据处理逻辑&…...
通俗易懂讲透超参数优化
通俗易懂讲透超参数优化(本科生/研究生都能看懂) 本文用大白话生活案例公式拆解完整代码,把超参数优化从概念、方法、对比到实战讲得清清楚楚,适合机器学习入门、面试复习、课程笔记。 一、先搞懂:什么是超参数优化&a…...
OpenClaw备份恢复方案:千问3.5-35B-A3B-FP8任务配置的迁移技巧
OpenClaw备份恢复方案:千问3.5-35B-A3B-FP8任务配置的迁移技巧 1. 为什么需要备份OpenClaw配置 上周我的主力开发机突然硬盘故障,导致所有数据丢失。最让我痛心的不是代码,而是精心调校了三个月的OpenClaw自动化工作流——包括对接千问3.5模…...
高阶 HDI 同行参考:40 层>5 阶 HDI 技术难点
【实战复盘】19 天拿下 40 层>5 阶板的工艺 项目管理方案 标签:高阶HDI、激光钻孔、电镀均匀性、多次压合最近刚完成一款40层且大于5阶的高阶HDI项目。坦白说,这板子难度不小:多次压合对位、激光钻孔一致性、电镀填孔均匀性&…...
深度理解算法和数据结构:栈并非天生存在,而是数组的「思想封装」|4 道经典题从本质吃透栈与单调栈
前言 在学习栈、队列这类数据结构时,很多人会陷入一个误区:把它们当成固定的 API、死记push/pop/top操作。 但我最近真正想通了一件事 ——数据结构从来不是先有的结构,而是先有的思想。栈并不是什么神奇的黑盒,它本质上就是&…...
释放AutoCAD潜能:PyAutoCAD自动化开发指南
释放AutoCAD潜能:PyAutoCAD自动化开发指南 【免费下载链接】pyautocad AutoCAD Automation for Python ⛺ 项目地址: https://gitcode.com/gh_mirrors/py/pyautocad 重新定义CAD工作流:为什么选择PyAutoCAD? 你是否曾陷入AutoCAD重复…...
WWDC技术笔记SEO优化策略:让更多开发者发现这个宝藏资源
WWDC技术笔记SEO优化策略:让更多开发者发现这个宝藏资源 【免费下载链接】WWDC You dont have the time to watch all the WWDC session videos yourself? No problem me and many contributors extracted the gist for you 🥳 项目地址: https://git…...
3个智能革新让黑苹果配置效率提升90%:OpCore-Simplify自动化EFI生成解决方案
3个智能革新让黑苹果配置效率提升90%:OpCore-Simplify自动化EFI生成解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果&#…...
大数据量的迁移,MySQL 5.x → 8.0 升级设计实施
MySQL 5.x 升级到 8.0 的场景,核心挑战是: 停机窗口控制(全量逻辑导出导入耗时极长) 数据一致性与回滚能力 8.0 新特性兼容性(如保留字、默认认证插件、排序组行为变化) 方案采用 主从复制 + 滚动升级 或 逻辑迁移(mydumper/并行备份) 两种路径,推荐优先使用前者(…...
探索Mesa:构建复杂系统仿真的Python框架
探索Mesa:构建复杂系统仿真的Python框架 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.com/gh_mirrors/me/mesa …...
