当前位置: 首页 > 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上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...