【C++】入门C++(上)

简单唠几句

从今天开始我们就要进入C++的学习了

众所周知,C++是在C语言的基础上应运而生的其容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式,为我们在编程上提供了很大的便捷

在接下来的这几篇C++入门的博客中,我会先讲解一些基础的语法,为后续类和对象学习打基础

OK,废话不多说,让我们进入C++的世界吧~
 

命名空间
 

在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化
以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的

我们不妨先看一下下面这段代码

#include <stdio.h>
#include <stdlib.h>

int rand = 10;
int main()
{
	printf("%d\n", rand);
	return 0;
}

执行上述代码后结果如下:

我们发现我们定义的变量与库发生冲突,而C语言却没办法解决类似这样的命名冲突问题

所以C++提出了用namespace来解决

我们定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}

{}中即为命名空间的成员

我们需要知道: 命名空间中可以定义变量/函数/类型

请看下面的代码:

接下来我们来看一个命名空间该如何使用,我们先看第一种使用方式

在main主函数中,这种加命名空间名称及作用域限定符 的方式是命名空间的一种使用方法

当然,我们也可以使用using将命名空间中某个成员引入

例如:

这是第二种使用方式

除此之外,命名空间的第三种使用方式是使用using namespace 命名空间名称 引入

请看下面的代码:

使用这种命名空间的好处就在于可以防止发生命名冲突

除此之外,命名空间还可以嵌套

C++输入&输出

下面我们来看一下关于C++的输入与输出是怎么实现的

请看下面的代码:


这里的代码出现了很多我们学C语言时没接触过的东西,下面且听我一一说来:

1. 使用cout标准输出对象(控制台)时,必须包含< iostream >头文件,以及按命名空间使用方法使用std
2. cout是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含<
iostream >头文件中。
3. <<是流插入运算符

特别注意的是:这里我们命名空间使用方法是using namespace std;

这样子使用虽然及其方便,不需要我们每次使用都去指定域,但也存在不足

因为我们把全部都展开了,如果我们不小心定义了一个与里面相同的变量,就会报错

虽说我们在日常的学习中不太可能出现这种问题,这样展开肯定可以,但是在以后写项目时,我们可以选择指定展开,即用到什么引入什么

使用C++输入输出相比于有一个很大的方便,那就是它不需要像printf/scanf输入输出时那样,需要手动控制格式,C++的输入输出可以自动识别变量类型

不过,因为C++兼容C,所以我们今后写代码是可以混着写,printf也是可以用的~

了解了输出,其实输入也很简单了,大家看一下下面的代码应该就能理解了~

缺省参数
 

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参

我们看一下下面的代码:

我们发现上面的函数在输出时,当我们没有传参时,就会使用参数的默认值,当我们传参时,它就会使用指定的实参

下面我们对缺省函数进行一个分类:

1.全缺省参数

2.半缺省参数

Tips:

1. 半缺省参数必须右往左依次来给出,不能间隔着给
2. 缺省参数不能在函数声明和定义中同时出现

3. 缺省值必须是常量或者全局变量
 

对于第2点,我们看看一个例子加深一下理解~

比如我们在.h和.cpp文件对函数的声明和定义的参数不一致,那么就会出现歧义

结语

好啦,对于C++入门的第一篇博客就先写到这里吧

如果文中分析,题解代码有不足的地方欢迎大家在评论区讨论和指正

接下来我也会持续更新与C++相关内容的博客

让我们在接下来的时间里一起学习,一起进步吧~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计方案-定时任务接口数据存储及更新策略

前言 在没有使用ETL工具且不考虑多数据源的情况下&#xff0c;我们需要从别的系统获取数据时&#xff0c;一般会选择分页接口查询并存储。本文算是我对类似场景代码的提炼&#xff0c;旨在总结相关套路&#xff0c;提升自我对数据库和模块的设计能力。 ETL(英文 Extract-Trans…

微分方程数值解法_常微分方程篇

一阶常微分方程初值问题 问题的适定性 (well-posedness): (數學系的角度) • 存在性:问题有解 • 唯一性:解是唯一的 • 稳定性:这个唯一解连续地依赖于问题中所给的数据(即初值、边值等) 初值问题的求解 Euler 法 區別(極限) 入門 要點:極限、中值定理==>差分方程…

linux进程退出之exit与_exit

linux进程退出之exit与_exit _exitexit流程清理函数atexit()函数&#xff1a;on_exit()函数&#xff1a; _exit /* Terminate program execution with the low-order 8 bits of STATUS. */ /** status参数定义了进程的终止状态&#xff0c;父进程可以通过wait&#xff08;&am…

leetcode刷题---链表

目录 1.删除链表的倒数第N个节点两两交换链表中的节点反转链表2 1.删除链表的倒数第N个节点 根据题目描述&#xff0c;第一个思路是存到数组中对数组进行操作&#xff0c;想到数组我们就可以想到下标和倒数第N个的关系&#xff0c;所以我们可以不额外开空间&#xff0c;可以直接…

vuex插件实现数据共享

vuex插件 vuex是管理多个vue通用的数据的插件.(状态管理工具,状态是数据) 我们对于多个vue文件之间的共同数据,是用props传递,或者对于一个vue实例对象,进行绑定,传参,也是多次传参,多个文件之间,比较麻烦. 但是我们vuex会创建一个公共对象,从这个公共对象上赋值,比较简单易…

appium辅助自动化工具-- Appium studio

这里我要给大家介绍一款appium辅助自动化测试工具appium studio&#xff0c;你没看错&#xff0c;不是android studio&#xff0c;也不是appium android studio&#xff0c;就是appium studio&#xff01; 下载地址&#xff1a; Appium Studio | Digital.ai Continuous Test…

【应用笔记】LAT1413+快速开关蓝牙导致设备无广播

1. 问题背景 客户使用 BlueNRG-345MC 开发了一个 BLE 外设&#xff0c;和手机连接。在测试中发现&#xff0c;手机连接上外设之后&#xff0c;不断地在手机上点击蓝牙的开关按钮&#xff0c;造成设备不断地断开、重连&#xff1b;少则几次&#xff0c;多则几十次。点击之后&am…

【小贪】万字长文介绍因果推断和增益模型

文章目录 因果推断和增益模型1. 绪论2. 因果推断基础3. 主要增益模型3.1 Meta Learning3.1.1 S-Learner&#xff08;One Model&#xff09;3.1.2 T-Learner&#xff08;Two Model&#xff09;3.1.3 R-Learner3.1.4 X-Learner3.1.5 类别转换法&#xff08;Class Transformation …

2024年noc指导教师认证测评参考试题题目5-6合集

[noc指导教师认证] 测评参考试题 说明:NOC教师指导认证考试题目是从题库里抽题,因此每位老师每次考试题目都不一样以下题目为测试考试时收集到的一些题目,作为辅助提供给各位老师,老师们可以记住题目及答案的具体内容 (选项顺序会变),以免考试时遇到。2024年的做的题目有的…

.Websalm勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 在数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒作为一种新型的电脑病毒&#xff0c;以其独特的传播方式和恶劣的性质&#xff0c;给广大用户带来了巨大的困扰。近期&#xff0c;Websalm勒索病毒成为了公众关注的焦点&#xff0c;其强…

【图轮】【 最小生成树】【 并集查找】1489. 找到最小生成树里的关键边和伪关键边

本文涉及知识点 图轮 最小生成树 并集查找 关键边 1489. 找到最小生成树里的关键边和伪关键边 给你一个 n 个点的带权无向连通图&#xff0c;节点编号为 0 到 n-1 &#xff0c;同时还有一个数组 edges &#xff0c;其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 to…

【C++庖丁解牛】自平衡二叉搜索树--AVL树

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1 AVL树的概念2. AVL…

【A-006】基于SSH的新闻发布系统(含论文)

【A-006】基于SSH的新闻发布系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MySQLIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; SpringStruts2HiberanteJSPJquery 适用于&#xff1a; 课程设计&#xff0c;毕业设计&…

玩转Django分页器

一、Pagination 分页器编程步骤 View, 导入django.core.paginator.Paginator类&#xff0c;创建Paginator 对象时&#xff0c;输入qs对象&#xff0c;以及每页显示条数。 接收 URL, 从请求参数中读取page数值 &#xff0c;通过 paginator.page(page_num) 返回请求页的page_obj…

ObjectiveC-05-复杂和特殊数据类型

这一节中会详细介绍下ObjectiveC中的复杂数据类型&#xff0c;这些类型不太是太归类。但非常有用&#xff0c;有的用于定义变量、有的则是专门用于方法的返回值。 常用的大概有如下这些&#xff1a; 以上这些特殊的数据类型都可用于变量、方法返回值、方法参数使用&#xff0c…

目标伪类选择器

E:target选择匹配E的所哟元素&#xff0c;且匹配元素被相关url指向 鼠标点击右边京东秒杀跳转到京东秒杀div&#xff0c;并变成黄色 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&…

HTML块级元素和内联元素(头部和布局)

目录 1.HTML块级和内联标签&#xff1a; 1.块级元素&#xff1a; 2.内联元素: 3.元素嵌套&#xff1a; 4.元素转换&#xff1a; 示例如下: 2.内联框架&#xff1a; 前言&#xff1a; 示例如下: 3.布局&#xff1a; 4.头部标签&#xff1a; 前言&#xff1a; 说明&…

Java获取当前时间

获取当前的时间 在Java中获取时间和日期使用Date类中的 toString方法 import java.util.Date;public class DateDemo {public static void main(String[] args) {Date date1new Date();System.out.println(date1.toString());} } 进一步格式化时间 SimpleDateFormat 是格式化…

Netty组件优化之FastThreadLocal

ThreadLocal:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132995427 Netty中的FastThreadLocal是对Java中的FastThreadLocal的优化主要是为了解决ThreadLocal中线性查找 带来的性能下降同时实现快速查找和赋值 FastThreadLocal构建这里的index代表一个编号&#xff0c;从…

ROS机器人入门第五课:话题通信自定义msg

文章目录 ROS机器人入门第五课&#xff1a;话题通信自定义msg一、介绍二、流程&#xff08;一&#xff09;定义msg文件&#xff08;二&#xff09;编辑配置文件&#xff08;三&#xff09;编译 三、话题通信自定义msg调用&#xff08;一&#xff09;调用流程0.vscode配置1.发布…