C++【基础】 ---- 快速入门 C++
文章目录
- 前言
- 一、有关 const 区分
- 二、有关命名空间
- 三、有关输入和输出
- 四、有关缺省参数
- 四、函数重载
- 总结
前言
本篇文章笔者将会对 C++ 这么语言中必须的基础部分进行简单讲解 , 同时也作为笔者自我复习使用, 这部分是初学C++ 的学者不可绕过的部分 , 希望学者认真理解 ,认真领会 .
一、有关 const 区分
C++ 中的 const 也同 C 语言中的用法类似 , const 在哪就修饰谁.
● 出现指针时的 const 修饰
在 C++ 中对于 const , 当出现指针时一定要特别注意 . 区分时可以这样区分 : 看 const 在 * 的前还是后
◎ const 在 * 前
当 const 在 *(表示指针) 前时 , const 修饰的就是指针变量指向的内容 , 意味着 : 指向的内容不能改变,但指针变量本是是可以改变的. ------- 此时就是 : 只可读 , 不可写 .
// const 修饰
int main()
{//const 修饰指针变量指向的内容 , 即: 只可读 , 不可写const int* p = nullptr;int a = 1;p = &a; // ok - > 读// *p = 2; // err - > 写 errreturn 0;
}
◎ const 在 * 后
当 const 在 *(表示指针) 后时 , const 修饰的就是指针变量本身 , 意味着 : 指针变量本身不可以改变 , 但修饰的内容可以改变 . ------- 此时就是 : 只可写 , 不可读 .
// const 修饰
int main()
{//const 修饰指针变量本身 , 即: 只可写 , 不可读int* const p = nullptr;int a = 1;//p = &a; // err - > 读 ---------- 报错 : error C3892: “p”: 不能给常量赋值*p = 2; // ok - > 写return 0;
}
二、有关命名空间
对于命名空间 , 笔者给出这样一个理解 : 就是一个命名域 , 这个域把一些东西包裹 , 想要这些内容时必须通过域来找到这些内容.
● 命名空间的基本用法
○ 命名空间必须定义在全局.
○ 项目中有多个同名命名空间会自动合并.
○ 两种形式
单独的命名空间
// 1. 单独的命名空间
namespace GJG
{int a = 1;int b = 2;int ADD(int a, int b){return a + b;}char c[] = "GJG 的命名空间";
}
命名空间的嵌套
//2. 命名空间的嵌套
namespace Compay
{// GJG的加法函数namespace GJG{int ADD(int a, int b){return a + b;}}//Other People 加法函数// 不同域中可以定义同名函数namespace OtherPeople{int ADD(int a, int b){return a + b;}}
}
命名空间的好处就是可以在外部使用时对同名函数等各自不受限制 , 不会受到冲突.
● 命名空间的三种使用方式
○ 对命名空间全部展开 (一般不推荐 , 日常练习可用)
#include <iostream>
using namespace std; // 将 std 这个命名空间全部展开 , 这样下面 cout , cin 就不用指定域了 //输出 + - * / 的结果
int main()
{int a = 10;int b = 20;cout << "a + b :" << a + b << endl;cout << "a - b :" << a - b << endl;cout << "a * b :" << a * b << endl;cout << "a / b :" << a / b << endl;return 0;
}
○ 展开常用
namespace GJG
{int a = 1;int b = 2;
}//打印 10 次 a , 1 次 b
using GJG::a; // 展开 aint main()
{//打印10 次 a , 1 次 bcout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;cout << GJG::b << endl;return 0;}
○ 指定域使用 ---- 项目常用
//指定
namespace GJG
{int a = 1;int b = 2;}//将 GJG 这个命名空间中的 a 改为 5 , 并打印int main()
{std::cout << "hello world !" << std::endl; // 指定使用GJG::a = 5;std::cout << "a = " << GJG::a <<std::endl;return 0;}
三、有关输入和输出
在 C++ 中 输入用 — cin 对应 >> , 输出用 cout 对应 << .
C++ 中的输入输出与 C语言最大的区别就是其可以自动识别类型 , 更加方便使用.
//输入输出可以自动识别类型
int main()
{int a = 0;double b = 0.0;char c = '0';std::cin >> a;std::cin >> b;std::cin >> c;std::cout << "int : a = " << a <<std::endl<<"double : b = " << b <<std::endl << "char : c = " << c << std::endl;return 0;
}
四、有关缺省参数
● 概念 : 给一个默认值(缺省值) , 当参数给定了就用给定的默认值(缺省值) ,当参数没有给定时就用该默认值.
● 类型: 全缺省 和 半缺省.
● 规定: C++ 规定, 缺省参数必须从右到左依次缺省 , 实参部分必须从左到右依次传参不得跳跃缺省或传参.
// 1. 全缺省
void Fun1(int a = 0, int b = 0 , int c = 0)
{cout << a << " " << b << " " << c << endl;
}// 2. 半缺省
void Fun2(int a , int b = 0, int c = 0)
{cout << a << " " << b << " " << c << endl;
}int main()
{//全缺省cout << "全缺省 >: " << endl;Fun1();Fun1(1);Fun1(1,2);Fun1(1,2,3);//半缺省cout << "半缺省 >: " << endl;Fun2(1);Fun2(1,2);Fun2(1,2,3);return 0;
}
四、函数重载
重载: 提到重载 , 这里笔者重点讲解一下 , 什么是重载 ?
首先 , 重载是 C++ 中提出的具有很大作用的一种语法 , 同时也是为了补 C 语言的坑 , 因为 C 语言是不支持同一域中有不同的同名函数的 , 这样就会报错 , 同时也不支持在同一文件中有同名函数 , 这样就会面临一个问题 : 代码冗余 , 当我们写同一函数具有不同参数时就要写多个函数出来 , 这样是很不好的.
● 函数重载
● 构成函数重载的条件 : 函数的参数列表不同 .
这里特别注意一点 : 选择题中会常考 , 这一概念 , 注意函数重载是与函数的返回值是无关的 , 只与参数列表有关.
● 代码理解
#include <iostream>
using namespace std;//函数重载// 1.
int ADD(int x , int y)
{return x + y;
}// 2. 参数与 1. 不同 , 构成函数重载
double ADD(double x, double y)
{return x + y;
}// 3. 参数与 1. and 2. 不同 , 构成函数重载
double ADD(double x, int y)
{return x + y;
}//这里特别注意参数列表的顺序也是其中一种情况 , 也是属于参数不同// 4. 顺序与上不同
double ADD(int x, double y)
{return x + y;
}int main()
{cout << "ADD(int x , int y) : " << ADD(1, 2) << endl;;cout << "ADD(double x, double y) :" << ADD(1.2, 2.2) << endl;;cout << "ADD(double x, int y) : " << ADD(1.2, 2) << endl;;cout << "ADD(int x, double y) : " << ADD(1, 2.2) << endl;;return 0;
}
总结
以上是对入门基础部分的简单讲解 , 后序还有更重要的内容哦 ~
相关文章:
C++【基础】 ---- 快速入门 C++
文章目录 前言一、有关 const 区分二、有关命名空间三、有关输入和输出四、有关缺省参数四、函数重载总结 前言 本篇文章笔者将会对 C 这么语言中必须的基础部分进行简单讲解 , 同时也作为笔者自我复习使用, 这部分是初学C 的学者不可绕过的部分 , 希望学者认真理解 ,认真领会…...
Neo4j+Neovis+Vue3:前端连接数据库渲染
Neovis(github):https://github.com/neo4j-contrib/neovis.js Neovis配置文档:neovis.js (neo4j-contrib.github.io) 一、安装Neo4j 参考文章:neo4j下载安装配置步骤-CSDN博客 二、Neovis使用 1.npm引入 ?npm ins…...
React 18
文章目录 React 18自动批处理并发特性Suspense 组件增强新 HookscreateRoot API 替代 ReactDOM.renderStrict Mode严格模式服务器端渲染改进性能优化 React 18 React 18 引入了一系列新特性和改进,旨在提升性能、改善用户体验,并简化开发流程。以下是 R…...
Java:集合(List、Map、Set)
文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…...
使用秘钥登录服务器
在我们测试或生产环境中,为了服务器安全性,有时可能需要以 SSH 密钥的方式登录服务器,接下来,将演示如何通过 SSH 私钥的方式来远程服务器。 一、远程服务器生成密钥对 1、首先在目标远程服务器下生成 SSH 密钥对 ssh-keygen然…...
BFS算法题
目录 1.BFS 2.树里的宽搜 题目一——429. N 叉树的层序遍历 - 力扣(LeetCode) 题目二——103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode) 题目三——662. 二叉树最大宽度 - 力扣(LeetCode) 题目四——…...
网络应用技术 实验八:防火墙实现访问控制(华为ensp)
目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验步骤 1、设计全网 IP 地址 2、设计防火墙安全策略 3、在 eNSP 中部署园区网 4、配置用户主机地址 5、配置网络设备 配置交换机SW-1~SW-5 配置路由交换机RS-1~RS-5 配置路由器R-1~R-3 6、配置仿…...
嵌入式现状、机遇、挑战与展望
在当今数字化浪潮中,嵌入式系统宛如一颗璀璨的明珠,熠熠生辉,深刻地渗透到了我们生活的方方面面,成为推动现代科技进步不可或缺的关键力量。从智能家居的便捷控制,到工业生产的精准运作,再到汽车的智能驾驶…...
天通卫星卡通知短信模板
文章目录 引言I 阿里云新增短信模板短信模板通知短信变量规范计费规则: 短信长度不超过70个字,按照1条短信计费;II 表设计III 实现方案引言 背景:天通卡适用于应急救灾、登山探险、海上通信、野外作业等需要稳定可靠通信的场景。 需求:天通卡充值成功通知 平台基于阿里云给…...
Unity WebGL 编译和打包说明(官方文档翻译校正)
目录 Unity WebGL 编译和打包说明WebGL 简介WebGL 浏览器兼容性 (WebGL Browser Compatibility)平台支持 (Platform Support)多线程支持限制多线程支持的因素安装 Unity Hub 并添加所需模块WebGL 开发WebGL Player 设置Resolution and PresentationResolutionWebGL TemplateSpl…...
题解 - 取数排列
题目描述 取1到N共N个连续的数字(1≤N≤9),组成每位数不重复的所有可能的N位数,按从小到大的顺序进行编号。当输入一个编号M时,就能打印出与该编号对应的那个N位数。例如,当N=3时,可…...
JAVA实战:借助阿里云实现短信发送功能
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
高阶函数:JavaScript 编程中的魔法棒
在JavaScript的世界里,高阶函数是一种强大的工具,它允许我们将函数作为参数传递或将函数作为返回值。这种特性使得JavaScript代码更加灵活和强大。本文将深入探讨高阶函数的定义、用法以及在实际项目中的最佳实践,帮助大家更好地理解和应用这…...
Android 12.0 Launcher3从首页开始安装app功能实现
1.前言 在12.0的系统rom定制化开发中,在进行Launcher3的某些功能开发实现过程中,在某些项目中,安装的app比较多,要求在launcher3的首页开始安装 app应用,接下来就需要分析下app安装图标排序的流程,然后在实现相关的功能 2. Launcher3从首页开始安装app功能实现的核心…...
软考高级架构 - 10.5 软件架构演化评估方法
10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则,并为每条原则设计了简单而有效的度量方法,用于从系统整体层面提供实用信息,帮助评估和指导架构演化。 演化成本控制:成本小于重新开发成本,经济高效。进…...
半导体制造全流程
半导体制造是一个极其复杂且精密的过程,主要涉及将硅片加工成功能强大的芯片。以下是半导体制造的全流程概述: 1. 硅材料制备 硅提纯: 使用冶金级硅,进一步提纯为高纯度硅(电子级硅),纯度可达 …...
国科大网络协议安全期末
完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...
ES动态索引——日志es索引数据按月份存储
一、定义ES索引 NoArgsConstructor AllArgsConstructor Data Accessors(chain true) Document(indexName "charge_pile_log" Constants.ES_TIME_DYNAMIC_INDEX) //(索引名称动态,前面固定,后面月份) public class ChargePileLogESDomain {…...
NLP论文速读(ICML 2024)|面相对齐大语言模型的迁移和合并奖励模型方法
论文速读|Transforming and Combining Rewards for Aligning Large Language Models 论文信息: 简介: 本文探讨了如何使大型语言模型(LLMs)与人类偏好对齐。传统的对齐方法是先从偏好数据中学习一个奖励模型,然后使用这…...
蓝桥杯我来了
最近蓝桥杯报名快要截止了,我们学校开始收费了,我们学校没有校赛,一旦报名缴费就是省赛,虽然一早就在官网上报名了,但是一直在纠结,和家人沟通,和朋友交流,其实只是想寻求外界的支持…...
Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析)内含实际案例教学
摘要 用Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析),包含画布创建、节点设计、拖拽实现(实际案例)、节点连线、交互功能,后续文章持续更新。 注:本文章可以根据目录进行导航 文档支持 AntVX6使用文档 https://x6.antv.antgroup.com/tutorial…...
【LeetCode】每日一题 2024_12_13 K 次乘运算后的最终数组 I(暴力)
前言 每天和你一起刷 LeetCode 每日一题~ 小聊两句 1、今天是 12.13 南京大屠杀国家公祭日。铭记历史,勿忘国耻。 2、今天早上去看了 TGA 年度游戏颁奖,小机器人拿下了年度最佳游戏,所有人都震惊了,大伙纷纷问到,谁…...
Plant simulation、Flexsim、Automod、Emulate3D、VisuaComponent仿真软件对比
软件名称物流系统仿真工业布局仿真动画效果数据分析优化虚拟现实/混合现实二次开发虚拟电控和PLC调试 软件行业内特殊功能Emulate3D1.物流设备模块完备,功能灵活设置,涵盖各种设备形态和运作方式 2.唯一将摩擦力、重力、阻力等物理属性融入到物流运动中&…...
深度学习day4|用pytorch实现猴痘病识别
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺要求: 训练过程中保存效果最好的模型参数。 加载最佳模型参数识别本地的一张图片。 调整网络结构使测试集accuracy到达88%&#x…...
批量导出工作簿中高清图片-Excel易用宝
我同事在工作簿中做了三个图表,现在需要将工作簿中的图标导出保存为高清图片,通过右键另存为保存的图片并非高清图片,其实要把Excel工作簿中的图表或图片对象导出为高清图片也很简单。 单击Excel易用宝 Plus,导出高清图片。 在导出…...
外观模式的理解和实践
外观模式(Facade Pattern)是一种常用的软件设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。该模式定义了一个高层的接口,使得子系统更容易使用。简单来说,外观模式就是通过引入一个外观角色…...
linux离线安装部署redis
版本信息 linux版本:CentOS-7-x86_64 redis版本:redis-6.2.6 VMware:VMware-workstation-full-16.1.1 xshell: Xshell-7.0 安装 1.查看当前虚拟机ip命令:ifconfig -a 2.xhell连接虚拟机 ,在xshell页面点击文件-…...
网管平台(基础篇):路由器的介绍与管理
路由器简介 路由器(Router)是一种计算机网络设备,它的主要作用是将数据通过打包,并按照一定的路径选择算法,将网络传送至目的地。路由器能够连接两个或更多个网络,并根据信道的情况自动选择和设定路由&…...
数据结构——跳表
目录 1.什么是跳表-skiplist 2.skiplist的效率如何保证? 3.skiplist的实现 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的…...
活动预告 |【Part2】Microsoft Azure 在线技术公开课:基础知识
课程介绍 参加“Azure 在线技术公开课:基础知识”活动,培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动,扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 课…...
程序员网站开发框架/百度权重网站排名
上期回顾 特别篇:java实现将视频分片上传到minio(一):视频分片 实现想法 上期我们已经将视频分片写到对应的文件夹中,那这期我们是不是只需要读取到对应的文件,然后将文件上传到minio中就可以了。 视频文件写入到minio minio版本 <dependency><groupId>io.m…...
网站的建设与管理/成都新一轮疫情
Linux 启动过程 实模式时内存分配 从实模式切换到保护模式 启用分段,就是在内存里面建立段描述符表,将寄存器里面的段寄存器变成段选择子,指向某个段描述符,这样就能实现不同进程的切换了。启动分页。能够管理的内存变大了&#…...
在那个网站做驾校模拟题/足球世界排名国家
1:添加分区: ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE(2003-06-01,YYYY-MM-DD));SALES表添加了一个P3分区 ALTER TABLE 表名 ADD PARTITION 分区名 VALUES LESS THAN(TO_DATE(2003-06-01,YYYY-MM-DD)); 给分区添加子分区࿱…...
建站软件排行榜/营销培训机构哪家最专业
Position 属性:规定元素的定位类型。即元素脱离文档流的布局,在页面的任意位置显示。 ①absolute :绝对定位;脱离文档流的布局,遗留下来的空间由后面的元素填充。定位的起始位置为最近的父元素(postion不为static)&…...
酒店网站建设的构思/网络营销策划书封面
线程6种状态:new状态/RUNNABLE(运行)/Blocked(线程阻塞)/Waiting(等待)/TIMED-Waiting(超时等待)/terminal(终止) (1 )new了个线程 进入[新建状态] (2) 执行start方法 进入[运行状态] (3)线程1…...
外贸建站代理/网站流量统计分析工具
转载自【脚本之家】,原文链接:http://www.jb51.net/article/42864.htm提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的…...