C++入门语法———命名空间,缺省参数,重载函数

文章目录

  • 一.命名空间
    • 1.存在意义
    • 2.语法使用
      • 1.定义命名空间
      • 2.使用命名空间的三种方式
  • 二.缺省参数
    • 1.全缺省参数
    • 2.半缺省参数
  • 三.重载函数
    • 1.定义
    • 2.重载原理———名字修饰

一.命名空间

1.存在意义

C++命名空间的主要意义是为了避免命名冲突,尤其是在大型项目中可能存在大量的全局变量、函数和类,这些都有可能会出现命名冲突。通过将这些实体放置在不同的命名空间中,可以有效地避免这种冲突。
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,

2.语法使用

1.定义命名空间

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

namespace qiangsir
{
	int a = 10;
	int b = 20;
	int Add(int x, int y)
	{
		return x + y;
	}
}

在主函数中使用命名空间的成员,是无法直接使用的,需要加上所命名的空间。

2.使用命名空间的三种方式

  • 通过使用作用域限定符::对所使用的内容一次手动添加查找域
int main()
{
	printf("%d\n",qiangsir::a);
	printf("%d\n",qiangsir::b);
	int c=qiangsir::Add(qiangsir::a, qiangsir::b);
	return 0;
}

在这里插入图片描述

  • 使用using将命名空间中某个成员引入
    如果频繁使用作用域中某个成员则可提前声明,防止每次添加
using qiangsir::Add;

当每次需要调用加法函数时,可以直接找到。

  • 使用using namespace 命名空间名称 引入
    这个使用相当于将自己的所有成员展开,使得每个地方都能找到。
using namespace qiangsir;

在实战过程中不建议这样使用,因为在大型项目合作中容易造成成员冲突,只有在平常练习和竞赛中有使用需求。

二.缺省参数

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

在使用缺省参数时,需要注意以下几点:

1.缺省参数通常应该放在参数列表的末尾,以便在调用函数时可以省略它们。
2.在调用函数时,可以通过传递参数的方式来覆盖默认值。
3.缺省参数的值通常应该是不可变的对象,比如数字、字符串或None,而不是可变对
象,比如列表或字典。缺省值必须是常量或者全局变量

1.全缺省参数

 int add(int x=3, int y=4)
{
	return x + y;
}

这里默认参数x=3,y=4
如果传了有效参数,则会覆盖默认值,否则使用默认值计算

int main()
{
	
	cout << add(1, 2) << endl;//有参数
	cout << add() << endl;//无参数
	return 0;
}

在这里插入图片描述

2.半缺省参数

注意的是半缺省参数,从右至左进行缺省,不可从左至右缺省
在这里插入图片描述
错误写法
在这里插入图片描述

三.重载函数

1.定义

函数重载是指可以定义多个具有相同名称但参数列表不同的函数。这意味着在同一个作用域内,可以有多个同名函数,只要它们的参数列表不同即可。在调用函数时,编译器会根据传入的参数类型和数量来确定调用哪个重载函数。

函数重载的主要特点包括:
1.函数名称相同,但参数列表不同。
2.参数列表不同可以通过参数的个数、类型或顺序来区分。
3.返回类型不同的函数不能作为重载函数,因为重载函数的区分标准是参数列表。

第三点极为重要,如图错误示范:
在这里插入图片描述
c++在这点上改进了c语言中无法函数同名的问题

2.重载原理———名字修饰

在c语言中函数调用时,需要以函数名找函数地址调用,所以同名函数无法区分。

所以语言设计者在c++中引入函数名修饰规则,在命名时引入了参数。

在c/c++中有这么几个编译步骤:
1.预处理
2.编译
3.汇编
4.链接
在链接过程中不同系统编译器下的名字修饰不同,这里以linux的命名规则进行展示:

[qiangsir@iZf8zbc41kduw4qa52iammZ ~]$ cat test.cpp
#include<iostream>
using namespace std;

int Add(int a,int b)
{
  return a+b;
}

double Add(double a,double b)
{
  return a+b;
}


int main()
{
cout<<Add(1,2)<<endl;
cout<<Add(1.2,2.3)<<endl;

  return 0;
}

在这里插入图片描述
在汇编层面,函数名已经经过修饰,如图,红色框框为Add的不同重载:
在这里插入图片描述
其中-Z为默认开头,3为字节数,ii为两个参数int的简称,dd为两个参数double的简称。
本期文章分享至此结束,感谢收看!
在这里插入图片描述

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

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

相关文章

ai伪原创生成器app,一键生成原创文章

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI伪原创生成器App已经成为了许多写手和创作者们的新宠。这款AI伪原创生成器App以其一键生成原创文章的快速便捷性&#xff0c;正在引起广泛的关注和使用。下面跟随小编一起来了解下吧&#xff01; 随着互联网的普及&…

8 种不同类型的防火墙

一、什么是防火墙&#xff1f; 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序&#xff0c;作为一道保护屏障&#xff0c;它只允许非威胁性流量进入&#xff0c;阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一&#xff0c;但它们容易受到以下方…

内网环境pip使用代理服务器安装依赖库

目录 使用proxy参数配置pip代理 使用配置文件配置pip代理 其他 由于公司内部网络无法访问外网导致安装依赖库失败&#xff0c;现将安装方法如下记录。 使用proxy参数配置pip代理 如不使用离线安装方法&#xff0c;可利用pip的--proxy参数进行代理的配置&#xff0c;使用方法…

1.15火星人(全排列+变进制数),涂国旗(搜索)

P1088 [NOIP2004 普及组] 火星人 首先是要得到当前排序的排名&#xff0c;其次是要得到它的排名 n进制就是说满n就进&#xff0c;该位上不可能保持为n&#xff0c;最多保持为n-1&#xff1b; 变进制数 #include<iostream> #include<iomanip> #include<vector…

力扣518. 零钱兑换 II

动态规划 思路&#xff1a; 假设 dp[i] 为金额 i 使用零钱的组合数&#xff0c;其可以由其中的一种零钱 coin 和 i - coin 组合&#xff1b; 遍历零钱数组&#xff0c;对每一种零钱 coin 进行如下操作&#xff1a; 从 coin 到 amount 金额进行遍历&#xff0c;dp[j] dp[j] d…

【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

此图显示了使用协作筛选预测用户评分的示例。起初&#xff0c;人们会对不同的项目&#xff08;如视频、图像、游戏&#xff09;进行评分。之后&#xff0c;系统将对用户对项目进行评分的预测&#xff0c;而用户尚未评分。这些预测基于其他用户的现有评级&#xff0c;这些用户与…

安全基础~通用漏洞1

文章目录 知识补充Acess数据库注入MySQL数据库PostgreSQL-高权限读写注入MSSQL-sa高权限读写执行注入Oracle 注入Mongodb 注入sqlmap基础命令 知识补充 order by的意义&#xff1a; union 操作符用于合并两个或多个 select语句的结果集。 union 内部的每个 select 语句必须拥有…

k8s详细教程(二)

5. Pod 详解 5.1 Pod 介绍 5.1.1 Pod 结构 每个 Pod 中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少Pause 容器&#xff0c;这是每个 Pod 都会有的一个根容器&#xff0c;它的作用有两个&#xff1…

感性负载对电路稳定性有什么影响?

感性负载是指带有电感元件的负载&#xff0c;如电动机、变压器等。在电路中&#xff0c;感性负载对电路稳定性有很大的影响。本文将从以下几个方面来分析感性负载对电路稳定性的影响&#xff1a; 当感性负载接通或断开时&#xff0c;会产生一个瞬时电流&#xff0c;这个瞬时电流…

GPT5?OpenAI 创始人:GPT5 已在训练中,需要更多数据

OpenAI 最近发出征集大规模数据集的呼吁&#xff0c;特别是“今天在互联网上尚未公开轻松获取”的数据集&#xff0c;尤其是长篇写作或任何格式的对话。 GPT-5丨AI浪潮席卷全球&#xff0c;OpenAI 推出GPT-4 后&#xff0c;又于上月26日宣布今年9月、10月将推出GPT-4.5&#xf…

C++PythonC# 三语言OpenCV从零开发(4):视频流读取

文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程&#xff08;附带课程课件资料课件笔记&#xff09; OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…

第九篇 华为云Iot SDK的简单应用

第九篇 华为云Iot SDK的简单应用 一、华为云Iot SDK API的简单使用 1.初始化SDK 2.绑定连接配置信息 3.连接服务器 4.上报属性 5.接收命令 二、实现智能家居灯光状态上报 &#x1f516;以下是上报数据到华为云Iot的代码片段&#xff0c;配合串口控制灯光&#xff0c;改变灯…

【论文阅读】Automated Runtime-Aware Scheduling for Multi-Tenant DNN Inference on GPU

该论文发布在 ICCAD’21 会议。该会议是EDA领域的顶级会议。 基本信息 AuthorHardwareProblemPerspectiveAlgorithm/StrategyImprovment/AchievementFuxun YuGPUResource under-utilization ContentionSW SchedulingOperator-level schedulingML-based scheduling auto-searc…

Ant Design Vue详解a-tree-select使用树形选择器,递归渲染数据,点击选项回显,一二级菜单是否可选等问题

后台给的树形数据&#xff1a; {"code": 200,"data": [{"code": "jsd","children": [{"code": "hx","children": [],"name": "航向","id": 8,"libTable…

Vue开始封装全局防抖和节流函数

封装文件 封装文件的实现思路如下&#xff1a; 首先&#xff0c;我们需要定义两个函数&#xff1a;防抖函数和节流函数。这两个函数的目的是为了减少频繁触发某个事件导致的性能问题&#xff1b;防抖函数的实现思路是创建一个计时器变量&#xff0c;用于延迟执行函数。当触发…

ubuntu下docker卸载和重新安装

卸载&#xff1a;步骤一&#xff1a;停止Docker服务 首先&#xff0c;我们需要停止正在运行的Docker服务。打开终端&#xff0c;执行以下命令&#xff1a; sudo systemctl stop docker 步骤二&#xff1a;删除Docker安装包 接下来&#xff0c;我们需要删除已经安装的Docker软件…

Android 渲染机制

1 Android 渲染流程 一般情况下&#xff0c;一个布局写好以后&#xff0c;使用 Activity#setContentView 调用该布局&#xff0c;这个 View tree 就创建好了。Activity#setContentView 其实是通过 LayoutInflate 来把布局文件转化为 View tree 的&#xff08;反射&#xff09;…

笔记本外接显示器的配置方法

目录 第一步 点击左下角&#xff0c;选择“设置” 第二步 选择系统&#xff0c;默认进入屏幕页面&#xff0c;页面往下拉&#xff0c;找到多显示器下拉框 前提&#xff1a;插好显示器的电源插头且插上笔记本HDMI线 第一步 点击左下角&#xff0c;选择“设置” 第二步 选择系…

STL第一讲

一、认识headers、版本、重要资源 1. C Standard Library和Standard Template Library 前者&#xff1a;c标准库&#xff1b;后者直译为“标准模板库” 区别: C标准库&#xff1a;是c编译器提供的自带的头文件(不带.h后缀)新版兼容C的头文件的形式cxxxx&#xff1b;旧版的xxx…

高清网络视频监控系统技术方案

目 录 一、概述 二、建设目标及需求 &#xff08;一&#xff09;建设总目标 &#xff08;二&#xff09;需求分析 三、设计依据与设计原则 &#xff08;一&#xff09;设计依据 &#xff08;二&#xff09;设计原则 四、建设方案设计 &#xff08;一&…