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

C++相关基础概念之入门讲解(上)

1. 命名空间

C++中的命名空间(namespace)是用来避免命名冲突问题的一种机制。通过将类、函数、变量等封装在命名空间中,可以避免不同部分的代码中出现相同名称的冲突。在C++中,可以使用namespace关键字来定义命名空间。

然后我们在调用的时候可以这样:

std::cout<<"啊吧怪不啊吧"<<endl;

就是在我们使用的每一行只要使用了关于std这个命名空间里面的东西,那么就在前面加上这个,即(命名空间名字)加上::来表示。当然,我相信很多人都会觉得繁琐,我们也可以在主函数外直接将命名空间展开,PS:一般来说我们自己写的小型代码可以直接展开,但是在一些大型的项目里面听说是不允许直接展开大型的命名空间,因为这会使项目代码运行速度过慢,因为要去里面一遍遍的重复查找那些函数,变量之类的。同时会造成命名空间冲突,使代码无法正常运行。

1.1 命名空间定义

​
namespace struggle
{int a=10;class hash{........};
}​

现在我们创建了一个命名空间,然后在里面有一int类型的变量a,他的大小为10。然后我们可以调用他,当然,如果我们在main函数上面已经展开了这个名为struggle的命名空间,那么我们就不可以重复定义一个变量叫a,并且给他赋值为5,3,7,之类的了。

1.2 命名空间的使用

​
​
using namespace struggle;int main()
{int b=a;hash<int,int> myhash;............return 0;
}​​

我们来看,在这张图里面,首先在main的上方展开了这个名为struggle的命名空间,然后我们便可以直接在main里面使用a这个变量和hash这个类。

2. 输入与输出

在C++中,输入与输出分别是cin与cout,然后通过>>与<<来间隔。比如说cin>>a和cout<<a;因为有人说像水一样流入与流出,所以他们也被称为流输入与流输出。

PS:使用他们时必须包含<iostream>以及按命名空间使用方法使用std.

3. 缺省参数

3.1 缺省参数概念

缺省参数是指在函数或方法的定义中设置了默认值的参数,当调用该函数或方法时如果没有传入对应参数的值,则会使用默认值。这样设计可以简化函数调用时的语法,提高代码的灵活性和可读性。在一些编程语言中,缺省参数也被称为默认参数。

​void func(int a=1)
{cout<<a<<endl;
}int main()
{    func();func(10);return 0;
}​

这个代码的输出结果是先输出一个1,再输出一个10。因为在这个代码里面程序会先判断你有没有给值,如果没有的话就会使用这个缺省参数,反之则不使用这个缺省参数。

3.2 缺省参数分类

缺省参数分为全缺省参数和半缺省参数。其实也很好理解,就是在函数体里面的每一个参数都有缺省值,那就是全缺省参数

​
​
void func(int a=1,int b=1)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}​​

如该图中的func就是全缺省参数。

如果在函数体里面不是每一个参数都有缺省值,那就是半缺省参数

​void func(int a=1,int b)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}

如该图中的func就是半缺省参数,因为里面的b并没有缺省值。

注意:如果说一个函数有两个缺省值,那你传过去的参数也不可以低于两个。

4. 函数重载

函数重载(Function Overloading)是指在C++中允许定义多个同名函数,这些同名函数具有不同的参数列表或参数类型。在调用这些同名函数时,编译器会根据参数的数量或类型来确定调用哪个函数。

​void print(int num) {cout << "Printing an integer: " << num << endl;
}void print(double num) {cout << "Printing a double: " << num << endl;
}int main() {print(10);print(3.14);return 0;
}​

在上面的示例中,定义了两个名为print的函数,一个接受int类型的参数,另一个接受double类型的参数。在main函数中分别调用这两个函数,根据参数类型的不同,编译器会自动选择调用对应的函数。

函数重载可以使代码更加灵活,但需要注意避免出现歧义性的情况,以确保编译器可以正确选择需要调用的函数。

相关文章:

C++相关基础概念之入门讲解(上)

1. 命名空间 C中的命名空间&#xff08;namespace&#xff09;是用来避免命名冲突问题的一种机制。通过将类、函数、变量等封装在命名空间中&#xff0c;可以避免不同部分的代码中出现相同名称的冲突。在C中&#xff0c;可以使用namespace关键字来定义命名空间。 然后我们在调…...

【数学建模】层次分析法(AHP)详解及其应用

层次分析法(AHP)详解及其应用 引言 在现实生活和工作中&#xff0c;我们经常面临复杂的决策问题&#xff0c;这些问题通常涉及多个评价准则&#xff0c;且各准则之间可能存在相互影响。如何在这些复杂因素中做出合理的决策&#xff1f;层次分析法(Analytic Hierarchy Process…...

【大模型】Transformer、GPT1、GPT2、GPT3、BERT 的论文解析

前言 在自然语言处理&#xff08;NLP&#xff09;和深度学习的快速发展中&#xff0c;Transformer模型和 GPT系列模型扮演了至关重要的角色。本篇博客旨在对这些开创性的论文进行介绍&#xff0c;涵盖它们的提出时间、网络结构等关键信息&#xff0c;能够快速的理解这些模型的设…...

TCP怎么保证可靠传输

一&#xff1a;连接管理 TCP是面向连接的协议&#xff0c;在数据传输前必须通过三次握手建立连接&#xff0c;结束时必须四次挥手来终止连接。这确保双方都准备好通信。 二&#xff1a;序列号和确认应答 每个字节的数据都被分配了一个序列号&#xff0c;这允许接收方将受到的数…...

TimeGAN:开启时间序列生成新纪元,结合GAN与自回归模型的优势

今天周末&#xff0c;给大家介绍一篇时序数据生成网络TimeGAN&#xff0c;一种用于时间序列生成的新框架&#xff0c;它将无监督GAN方法的多功能性与有监督自回归模型对条件时间动态的控制相结合。通过利用有监督损失和联合训练的嵌入网络&#xff0c;TimeGAN在生成逼真的时间序…...

【Java 优选算法】分治-归并排序

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 数组分块如二叉树的前序遍历, 而归并排序就如二叉树的后序遍历 912. 排序数组 解法 使用归并算法 根据中间点划分区间, mid (right left ) / 2将左右区间排序合并两个有…...

【Kubernetes】Service 的类型有哪些?ClusterIP、NodePort 和 LoadBalancer 的区别?

在 Kubernetes 中&#xff0c;Service 是一种抽象的方式&#xff0c;用于将一组 Pod 进行连接并暴露给外部或集群内部访问。它的主要目的是通过提供稳定的 IP 地址和端口来允许其他服务或客户端与一组 Pod 进行通信。 Service 类型 Kubernetes 中 Service 有四种主要类型&…...

三格电子Modbus TCP转CANOpen网关相关问答

型号&#xff1a;SG-TCP-COE-210 Q1: Modbus TCP转CANOpen网关的主要功能是什么&#xff1f; A1: 该网关的核心功能是实现 Modbus TCP协议与CANOpen协议之间的双向数据转换&#xff0c;使支持Modbus TCP的工业设备&#xff08;如PLC、HMI&#xff09;能够与基于CANOpen协议的设…...

BSP、设备树和HAL的关系:以Xilinx Zynq为例与PC BIOS的对比

BSP、设备树和HAL的关系&#xff1a;以Xilinx Zynq为例与PC BIOS的对比 引言 在嵌入式系统开发中&#xff0c;Board Support Package (BSP)、设备树&#xff08;Device Tree&#xff09;和硬件抽象层&#xff08;Hardware Abstraction Layer, HAL&#xff09;是三个密切相关的…...

Kubernetes 中metrics-server的采集周期,采集链路是什么样的?

0. 运维干货分享 软考高级系统架构设计师备考学习资料软考高级网络规划设计师备考学习资料Kubernetes CKA认证学习资料分享信息安全管理体系&#xff08;ISMS&#xff09;制度模板分享免费文档翻译工具(支持word、pdf、ppt、excel)PuTTY中文版安装包MobaXterm中文版安装包ping…...

Flutter FloatingActionButton 从核心用法到高级定制

目录 1. 引言 2. FloatingActionButton 的基本用法 3. 主要属性 4. 进阶定制技巧 4.1 扩展型 FAB 4.2 动态变形动画 4.3 多个 FAB 协同 5. 主题与动效集成 5.1 全局主题配置 5.2 平台适配方案 5.3 高级动画控制器 6. 最佳实践 6.1 布局规范 6.2 性能优化 6.3 无…...

【恒流源cc与恒压源cv典型电路解析】

在电子电路设计中&#xff0c;恒流源和恒压源是两种至关重要的电源类型&#xff0c;它们分别能为负载提供稳定的电流和电压。以下将详细解析这两种电源的典型电路。 ## 一、恒压源 ### &#xff08;一&#xff09;采用线性稳压器的恒压源电路 1. **电路组成** - 以常见的 78…...

Anaconda conda常用命令:从入门到精通

1 创建虚拟环境 conda create -n env_name python3.8 2 创建虚拟环境的同时安装必要的包 conda create -n env_name numpy matplotlib python3.8 3 查看有哪些虚拟环境 以下三条命令都可以。注意最后一个是”--”&#xff0c;而不是“-”. conda env list conda info -e c…...

Topo2Seq:突破DETR局限,车道拓扑推理新高度

本篇针对先前DETR类框架远距离感知较弱且车道端点不对齐问题&#xff0c;提出了一种通过拓扑序列学习来增强拓扑推理的新方法Topo2Seq。在OpenLane-V2数据集上的实验结果表明&#xff0c;Topo2Seq在拓扑推理方面实现了最先进的性能。 ©️【深蓝AI】编译 论文标题&#xf…...

程序地址空间:深度解析其结构,原理与在计算机系统中的应用价值

目录 1. 程序地址空间回顾 1.1 虚拟地址 2.进程地址空间 分页&虚拟地址空间 引入新概念 解释上述关于同样的地址不同的变量值问题 回答一个历史遗留问题 ​编辑 3.虚拟内存管理 虚拟内存是什么 虚拟地址空间区域划分 为什么要有虚拟地址空间 1. 程序地址空间回…...

前端项目的构建流程无缝集成到 Maven 生态系统(一)

在阅读 nexus-public 过程中&#xff0c;发现 ui 无缝集成到 maven 中&#xff0c;这个插件在国外用的还是比较多的。当前后端一体化的工具性应用&#xff0c;一来省去了前后端来回沟通的成本&#xff0c;二来大大降低了协作时间&#xff0c;最终达成软件工具开发的低成本。正文…...

LeetCode 2272.最大波动的子字符串:转为多次的最大子数组和 - 一步步思考推导

【LetMeFly】2272.最大波动的子字符串&#xff1a;转为多次的最大子数组和 - 一步步思考推导 力扣题目链接&#xff1a;https://leetcode.cn/problems/substring-with-largest-variance/ 字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之…...

火语言RPA--列表项内容设置

【组件功能】&#xff1a;设置列表项内容 配置预览 配置说明 索引项位置支持T或# 列表对象待修改内容的索引位置。 内容值 支持T或# 默认FLOW输入项 修改的内容值。 示例 对象修改 描述 列表对象索引为0的数据修改为A字符串&#xff0c;并打印修改结果。 配置 输出结…...

1.Qt SDK 的下载和安装

1Qt 下载官⽹&#xff1a; http://download.qt.io/archive/qt/ 2版本自行选择 3下载对应版本的.exe文件 4下载包下载完成 5双击.exe文件&#xff0c;默认下一步&#xff0c;要注册一个qt的账户 6记住程序安装的位置&#xff0c;后面要配置环境变量 7勾3个&#xff08;组件自行…...

嵌入式系统中的Board Support Package (BSP)详解:以Xilinx Zynq为例

嵌入式系统中的Board Support Package (BSP)详解&#xff1a;以Xilinx Zynq为例 引言 在嵌入式系统开发中&#xff0c;硬件与软件的无缝集成至关重要。Board Support Package (BSP) 作为连接硬件和操作系统的桥梁&#xff0c;在这一过程中扮演着核心角色。本文将深入探讨BSP的…...

Spring Boot 定时任务以及异步任务的实现

一、定时任务 在 Spring Boot 中&#xff0c;实现定时任务非常简单&#xff0c;主要通过 Scheduled 注解和 TaskScheduler 接口来实现。以下是实现定时任务的详细步骤和方法&#xff1a; 启用定时任务支持 在 Spring Boot 应用中&#xff0c;首先需要启用定时任务支持。可以通…...

Vue 生命周期详解:从创建到销毁的全过程

Vue.js 是一个流行的前端框架&#xff0c;它通过组件化的方式帮助开发者构建用户界面。在 Vue 中&#xff0c;每个组件实例都有其生命周期&#xff0c;从创建、挂载、更新到销毁&#xff0c;Vue 提供了一系列的生命周期钩子函数&#xff0c;允许我们在组件的不同阶段执行自定义…...

【ASMbits--常用算术运算指令】

ASMbits--常用算术运算指令 1 基本运算算术指令--最基础1.1 加法和减法1.2 移位操作1.3 乘法 2 practice2.1 编写invert(int n)2.2 编写judge_odd(int n)2.3 计算绝对值abs(int n)2.4 add(int n1, int n2)函数2.4 shift寄存器2.5 sihft ath right2.6 shift left 在ARMv7汇编中&…...

计算机基础:二进制基础12,十进制数转换为十六进制

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;计算机基础&#xff1a;二进制基础11&#xff0c;十六进制的位基…...

SpringCloud系列教程(十四):Sentinel持久化

Sentinel之前已经搭建和应用成功了&#xff0c;但是它有一个很大的缺点就是官方没有提供持久化的方案&#xff0c;从项目源码上看感觉这款工具也没有完成的太好&#xff0c;所以需要我们去对它进行二次开发。要补充的功能大概如下&#xff1a; 1、将Sentinel接入nacos中&#…...

Slider,InputField,Scroll View,Scrollbar及Layout组件

Slider组件 Fill Rect:填充滑动条选中区域的背景图部分 Handle Rect:滑动条的球 Direction:滑动条的滑动方向 Min Value:起始位置的数值&#xff08;浮点数&#xff09; Max Value:结束位置的数值&#xff08;浮点数&#xff09; Whole Numbers:必须为整数&#xff08;布尔…...

ollama注册自定义模型(GGUF格式)

文章目录 ollama注册自定义模型&#xff08;GGUF格式&#xff09;下载模型注册模型(GGUF格式) ollama注册自定义模型&#xff08;GGUF格式&#xff09; 需要全程开启ollama nohup ollama serve > ollama.log 2>&1 &需要注意&#xff0c;尽管手动下载的GGUF格式模…...

【算法】 区间合并(附蓝桥杯真题) python

步骤 1.先将所有区间按左端点排序 2.从前往后扫一遍&#xff0c;维护当前正在合并的区间[st, ed] 3.依次检查每个区间[l, r]&#xff0c; 若 l > ed,将[st, ed]加入 ans , 更新st l,ed r 若 l < ed &#xff0c;更新ed max(ed, r) 时间复杂度 O(nlogn) 模板 https:/…...

关于重构分析查询界面的思考(未完)

业务系统里&#xff0c;查询界面很常见&#xff0c;数据分析场景需求普遍而迫切&#xff0c;而新的技术也在不断出现&#xff0c;很有必要重构分析查询界面。 查询筛选 为了尽可能从数据中发现&#xff0c;需要尽可能地将查询条件添加进来&#xff0c;可这样&#xff0c;查询…...

机器人技能列表

一、机器人制作基础入门 &#xff08;一&#xff09;机器人概述 1.机器人的定义与分类 2.机器人的发展历程与现状 3.机器人在各领域的应用案例 &#xff08;二&#xff09;必备工具与材料 4.常用电子工具介绍&#xff08;万用表、电烙铁等&#xff09; 5.机械加工工具&…...