当前位置: 首页 > news >正文

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/看到查询星座幸运色的效果,想研究一下代码,结果右键禁用。后来参考了一下别人的代码,琢磨着先实现了一下星座查询的功能,输入月份和日期四位数后,可以查询属于哪个星座&#xf…...

全国青少年软件编程(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上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

多模态大语言模型arxiv论文略读(110)

CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文标题:CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文作者:Hidehisa Arai, Keita Miwa, Kento Sasaki, Yu Yamaguchi, …...

组合模式:构建树形结构的艺术

引言:处理复杂对象结构的挑战 在软件开发中,我们常遇到需要处理部分-整体层次结构的场景: 文件系统中的文件与文件夹GUI中的容器与组件组织结构中的部门与员工菜单系统中的子菜单与菜单项组合模式正是为解决这类问题而生的设计模式。它允许我们将对象组合成树形结构来表示&…...