C++初始

news2025/1/12 12:06:02

想要学习了解C++,首先需要了解是C++是什么?需要对C++有一个明确的定位。

这时候很多人都会说C++不就是编程语言吗,有啥可了解的。确实C++就是一个编程语言,但是我们在学习的时候要将其当成一种工具,而不是一种技术。简单来说C++就是我们刨地用的锄头,在地里他就是刨地用的,当面对野兽的时候,拿起来就是武器。而你拿锄头能干成啥那就是你的技术。

作为一个农村人要使用锄头我们首先要知道锄头由那些部件组成,那部分是用于刨地的,那部分是把手。同样在使用C++之前要了解C++都有那些部分。

C++的使用主要大的分为两部分,第一部分就是C++语言本身的特性,第二部分就是C++的程序库

接下来主要介绍的是C++语言本身。

C++语言本身总结起来就是一系列的关键字通过不同的方式在特定的范围组成的一些列执行语句。而不同的方式就包括函数、数据的定义和数据之间的运算。

知道了这个我们来描述一下C++程序的组成。C++程序是编写是在一定的范围中,这个范围就是程序的作用域。在作用域中通过关键字定义数据,定义函数,定义类,定义函数等。

那么C++有那些作用域呢?

C++程序的作用域主要分为四个范围:全局作用域(项目作用域)、命名空间作用域、类作用域和函数作用域。

其中作用域从大到小的顺序为:全局作用域 > 命名空间作用域 > 类作用域 > 函数作用域。

作用域说完了,也知道了程序的运行范围,那么下一步就需要了解关键字了,因为无论是函数的定义还是数据的定义都离不开关键字,可以说是关键字是C++程序编写必不可少的一部分,没有关键字C++就没有语法,更谈不上编程。

C++98/03中的63个关键字,其中也包括C语言中的关键字。C++11中有73个关键字。这些关键字后续都会介绍到。

现在关键字有了,编程范围也知道了,剩下的就是如何通过关键字将26个字母组合成我们需要的程序。

首先是建立一个C++工程,一个简单的C++工程包含就包含一个简单的CPP文件和.h文件,一下就是一个简单的VSC++工程。

在这里插入图片描述

以上的C++工程中只有一个简单的main函数,而main函数是C++运行的起始也就是函数,所有的程序包括C语言都有一个起始函数,C语言的起始函数也是main函数。一般在使用C++的时候看不到main函数,那是因为框架已经写好了,例如使用win32API编辑应用程序的时候有一个WinAPI,而qt中则是main文件中的main函数。main函数不是类中的函数,是一个全局函数,在整个项目中有且仅有一个。剩下就是由各个文件和类组成的数据运算的代码逻辑。

在这里插入图片描述

以上工程是一个最简单的工程,也是最简单的函数。而C++的工程一般都很复杂。一个完整的C++程序会包含很多文件和模块。每个模块都是由多个文件组成,每个文件中有一个或者多个类组成,而每个模块可能有一个命名空间。

这里会有人疑问,为啥是可能有一个命名空间?

在多模块开发的时候由于每个人开发的模块不一样,但是有可能是用相同的函数或者变量名,因此可能在项目整体运行的时候会出现二义性,为了解决这一问题,C++程序就引入了命名空间,命名空间在一定程度上很好的解决二义性的问题。在小型的C++项目中可以不用命名空间,但是在进行大的应用程序开的时候命名空间是一个不错的选择。使用命名空间很好的隔离各个模块,防止程序中变量名称和函数名称的重复定义。

说完命名空间,接下来说一下类。

在命名空间中就是我们C++的中最常见的组成类(class)。类也可以认为是一个数据类型。一个类一般是.Cpp文件和.h文件共同实现的,类的的声明在一般是在.h文件,类函数的定义是在.CPP文件中。类的结构也是在.h文件中体现。

定义类的关键字是class,在class有很多元素,而组成的元素主要有两个:数据函数

数据就是在函数运行过程中需要计算和使用的参数。

函数就是就是计算数据的方法,这些方法在程序中就称为函数。

当然数据在声明定义的过程中需要用到一些关键字来说明数据的类型,还需要一些关键字限制数据的一些特性。

既然数据有限定,那当然函数也需要一些关键字进行限制和赋予一些特性。

上面提到函数是用来处理计算数据的,那么函数是通过什么来控制和处理数据的,C++和其他的程序一样,程序的控制有三种执行结构:循环结构、顺序结构和分支结构。通过这三种结构的组合就形成了程序错综复杂的程序处理逻辑。数据之间的计算是通过运算符来实现数据之间的加减乘除、二进制的移位等。

当然一般在程序开发过程中不会单独使用一个类或者一个文件。那么如果需要使用其他文件中的类应该如何使用?这里就需要使用#include<头文件>或#include “头文件”。这里的#include算是一种

当然当程序运行出现异常之后,就需要使用异常处理类捕获和处理异常。

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

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

相关文章

8应用服务与领域服务

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务&#xff08;本文&#xff09;领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…

rk3399 linux4.19 ubuntu mpv播放概率性内核崩溃在vop_crtc_atomic_flush

现象&#xff1a;使用 mpv播放视频时&#xff0c;播放一段时间后内核core 环境&#xff1a; linux sdk版本&#xff1a;4.19.172 ubuntu18系统 验证&#xff1a; 1. /etc/mpv/mpv.conf 默认配置voxv 播放一段时间后&#xff0c;内核core 2. /etc/mpv/mpv.conf vogpu播放稳定…

Python 逢七拍手小游戏2.0

"""逢七拍手游戏介绍&#xff1a;逢七拍手游戏的规则是&#xff1a;从1开始顺序数数&#xff0c;数到有7&#xff0c;或者是7的倍数时&#xff0c;就拍一手。例如&#xff1a;7、14、17......70......知识点&#xff1a;1、循环语句for2、嵌套条件语句if/elif/e…

贪心算法-

代码随想录 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 这么说有点抽象&#xff0c;来举一个例子&#xff1a; 例如&#xff0c;有一堆钞票&#xff0c;你可以拿走十张&#xff0c;如果想达到最大的金额&#xff0c;你要怎么拿&#xff…

Oracle分区的使用详解:创建、修改和删除分区,处理分区已满或不存在的插入数据,以及分区历史数据与近期数据的操作指南

一、前言 什么是表分区: Oracle的分区是一种将表或索引数据分割为更小、更易管理的部分的技术。它可以提高查询性能、简化维护操作,并提供更好的数据组织和管理。 表分区和表空间的区别和联系: 在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对…

set和数组的区别

set&#xff08;创建可迭代对象&#xff09;&#xff1a; 伪数组(创建类数组对象)&#xff1a;

关于x=x++注意事项

一、问题提出。 输出0123456789 输出12345678910 输出0123456789 输出全部为0 二、解释。 x对应一个变量表的槽位&#xff0c;初始值为0&#xff0c;x对应两条字节码指令iload_x&#xff08;将x槽位对应的值加载到操作数栈&#xff09;&#xff0c;iinc x1&#xff08;对x所…

【从0学习Solidity】45. 时间锁

【从0学习Solidity】45. 时间锁 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开…

Visual Studio首次运行报错

在Visual Studio 运行代码时候&#xff0c;经常会报方法不安全 错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. demo01 D:\vs_worrkp…

ProConOS协议的服务端模拟程序

问题&#xff1a; 实现ProConOS协议的服务端模拟程序&#xff0c;参考https://github.com/fofapro/fapro的实现&#xff0c;写一个命令行工具&#xff0c;通过配置文件制定协议相关配置&#xff0c;启动后&#xff0c;使用nmap扫描可以返回指定的模拟设备信息&#xff0c;比如…

二十五、MySQL事务的四大特性和常见的并发事务问题

1、事务的四大特性 2、常见的并发事务问题 &#xff08;1&#xff09;并发事务问题分类&#xff1a; &#xff08;2&#xff09;脏读&#xff1a; 一个事务正在对一条记录做修改&#xff0c;在这个事务完成并提交前&#xff0c;这条记录的数据就处于不一致的状态&#xff1b;…

如何使用show profile 查看sql的执行周期

修改配置文件/etc/my.cnf 新增一行&#xff1a;query_cache_type1 重启mysql 先开启 show variables like %profiling%; set profiling1;select * from xxx ;show profiles; #显示最近的几次查询show profile cpu,block io for query 编号 #查看程序的执行步骤

【C++】string类模拟实现下篇(附完整源码)

目录 1. resize2. 流插入<<和流提取>>重载2.1 流插入<<重载2.2 流提取 << 3. 常见关系运算符重载4. 赋值重载4.1浅拷贝的默认赋值重载4.2 深拷贝赋值重载实现4.3 赋值重载现代写法 5. 写时拷贝(了解&#xff09;6.源码6.1 string.h6.2 test.cpp 1. res…

数据结构-----二叉树的创建和遍历(C/C++)

目录 前言 二叉树的链式存储结构 二叉树的遍历 1.前序遍历 2.中序遍历 3.后序遍历 二叉树的创建 创建一个新节点的函数接口 1.创建二叉树返回根节点 2.已有根节点&#xff0c;创建二叉树 3.已有数据&#xff0c;创建二叉树 前言 在此之前我们学习了二叉树的定义和储…

论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)

目录 1.作者提出的问题及解决方向 2.延深-用如何用强化学习对机器人进行控制 2.1思路 2.2DQN和DDPG在机器人控制中的应用 3.解决方案 3.1思路 3.2实验 3.3创新点 4.展望 1.作者提出的问题及解决方向 目的&#xff1a;使机械臂在非结构化环境下实现端到端的自主学习控制…

400电话申请流程详解,助您快速办理联通、移动、电信400电话

导语&#xff1a;随着企业业务的发展&#xff0c;越来越多的企业开始关注400电话的申请与办理。本文将为您详细介绍联通、移动、电信400电话的申请流程&#xff0c;帮助您快速办理400电话&#xff0c;提升企业形象和客户服务质量。 一、联通400电话申请流程 咨询与选择&#x…

Visual Studio复制、拷贝C++项目与第三方库配置信息到新的项目中

本文介绍在Visual Studio软件中&#xff0c;复制一个已有的、配置过多种第三方库的C项目&#xff0c;将其拷贝为一个新的项目&#xff0c;同时使得新项目可以直接使用原有项目中配置好的各类**C**配置、第三方库等的方法。 在撰写C 代码时&#xff0c;如果需要用到他人撰写的第…

winget安装提示:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd

问题&#xff1a; 当我们使用 Winget 包管理器安装软件时总是提示以下错误。 执行此命令时发生意外错误&#xff1a; InternetOpenUrl() failed. 0x80072efd : unknown error解决方法&#xff1a; DNS是一种将网址转化为IP地址的重要工具。如果你的电脑无法访问GitHub&#…

RISC-V函数调用约定 ABI

有关寄存器的编程约定 函数调用过程中函数跳转和返回指令的编程约定 call和ret用的最多 注意前戏 protogue 汇编调用C case asm2c test.s foo函数就是C代码中的函数名 test.c C调汇编 (内嵌汇编) r register m memory

转转闲鱼交易猫链接源码 支持二维码收款

最新仿二手闲置链接源码 后台一键生成链接&#xff0c;后台管理教程&#xff1a;解压源码&#xff0c;修改数据库config/Congig 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3