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

c++中的命名空间与缺省参数

一、命名空间

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

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

在c语言中rand是一个函数名,定义rand的值后会报错 ,两者之间会冲突,这时候使用命名空间就会很好的解决问题,将rand放入一个命名空间后再进行指定访问,如下

此外,命名空间可以包含许多内容,如函数,结构体等,

namespace bit
{int rand = 0;int add(int x, int y){return x + y;}struct Node{int val;};
}

3.命名空间使用

1.命名空间可以嵌套命名空间

2.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中

3.使用using namespace 命名空间名称 引入

using namespace bit;

4.使用using将命名空间中某个成员引入 

using bit:: rand;

4.c++的输入输出

#include <iostream>是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中 using namespace std;  

std命名空间的使用: std是C++标准库的命名空间,如何展开std使用更合理呢? 1. 在日常练习中,建议直接using namespace std即可,这样就很方便。 2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式

需要注意:

不同域可以定义同名变量

编译时默认查找顺序:先局部,再同时全局和展开的命名空间 

 5、有三种方式来访问命名空间的成员:

1.指定访问

2.展开命名空间的某一个

3.展开某个命名空间的全部

二、缺省参数

1.概念

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

void add1(int a=1, int b=2, int c=3)
{cout << a  << endl;cout << b  << endl;cout << c << endl;
}
void add2(int a, int b = 2, int c = 3)
{cout << a << endl;cout << b << endl;cout << c << endl;
}
int main()
{add1();add2(10,3,5);
}

2.分类

1.全缺省,参数都有缺省值,如上图的add1

2.半缺省,部分参数有缺省值,并且只能从右向左缺省,如上图add2 

3.有声明有定义时,只能在声明中使用缺省参数

相关文章:

c++中的命名空间与缺省参数

一、命名空间 1、概念&#xff1a;在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c; 以避免命名冲突或…...

SpringBoot整合WebSocket实现聊天室

1.简单的实现了聊天室功能&#xff0c;注意页面刷新后聊天记录不会保存&#xff0c;后端没有做消息的持久化 2.后端用户的识别只简单使用Session用户的身份 0.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…...

llama-factory学习个人记录

框架、模型、数据集准备 1.llama-factory部署 # 克隆仓库 git clone https://github.com/hiyouga/LLaMA-Factory.git # 创建虚拟环境 conda create --name llama_factory python3.10 # 激活虚拟环境 conda activate llama_factory # 安装依赖 cd LLaMA-Factory pip install -…...

VLC播放器(全称VideoLAN Client)

一、简介 VLC播放器&#xff08;全称VideoLAN Client&#xff09;是一款开源的多媒体播放器&#xff0c;由VideoLAN项目团队开发。它支持多种音视频格式&#xff0c;并能够在多种操作系统上运行&#xff0c;如Windows、Mac OS X、Linux、Android和iOS等。VLC播放器具备播放文件…...

跟小伙伴们说一下

因为很忙&#xff0c;有一段时间没有更新了&#xff0c;这次先把菜鸟教程停更一下&#xff0c;因为自己要查缺补漏一些细节问题&#xff0c;而且为了方便大家0基础也想学C语言&#xff0c;这里打算给大家开一个免费专栏&#xff0c;这里大家就可以好好学习啦&#xff0c;哪怕0基…...

学 C/C++ 具体能干什么?

学习 C 和 C 后&#xff0c;你可以从事许多不同的工作和项目&#xff0c;这两种语言以其高性能和低级控制而闻名&#xff0c;特别适合以下几个领域&#xff1a; 1. 系统编程 C 和 C 是系统编程的首选语言&#xff0c;适用于操作系统、驱动程序和嵌入式系统开发。 操作系统开发…...

Django之Ajax实战笔记--城市级联操作

1. 项目架构搭建 1.1 创建项目tpdemo,创建应用myapp # 创建项目框架tpdemo$ django-admin startproject tpdemo$ cd tpdemo# 在项目中创建一个myapp应用$ python manage.py startapp myapp# 创建模板目录$ mkdir templates$ mkdir templates/myapp$ cd ..$ tree tpdemotpdemo…...

基于Netty实现WebSocket服务端

本文基于Netty实现WebSocket服务端&#xff0c;实现和客户端的交互通信&#xff0c;客户端基于JavaScript实现。 在【WebSocket简介-CSDN博客】中&#xff0c;我们知道WebSocket是基于Http协议的升级&#xff0c;而Netty提供了Http和WebSocket Frame的编解码器和Handler&#…...

27【Aseprite 作图】盆栽——拆解

1 橘子画法拆解 (1)浅色3 1 0;深色0 2 3 就可以构成一个橘子 (2)浅色 2 1;深色1 0 (小个橘子) (3)浅色 2 1 0;深色1 2 3 2 树根部分 (1)底部画一条横线 (2)上一行 左空2 右空1 【代表底部重心先在右】 (3)再上一行,左空1,右空1 (4)再上一行,左突出1,…...

【开源】2024最新python豆瓣电影数据爬虫+可视化分析项目

项目介绍 【开源】项目基于pythonpandasflaskmysql等技术实现豆瓣电影数据获取及可视化分析展示&#xff0c;觉得有用的朋友可以来个一键三连&#xff0c;感谢&#xff01;&#xff01;&#xff01; 项目演示 【开源】2024最新python豆瓣电影数据爬虫可视化分析项目 项目截图…...

[JDK工具-5] jinfo jvm配置信息工具

文章目录 1. 介绍2. 打印所有的jvm标志信息 jinfo -flags pid3. 打印指定的jvm参数信息 jinfo -flag InitialHeapSize pid4. 启用或者禁用指定的jvm参数 jinfo -flags [|-]HeapDumpOnOutOfMemoryError pid5. 打印系统参数信息 jinfo -sysprops pid6. 打印以上所有配置信息 jinf…...

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程&#xff1f; 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…...

Java与GO语言对比分析

你是不是总听到go与java种种对比&#xff0c;其中在高并发的服务器端应用场景会有人推荐你使用go而不是 java。 那我们就从两者运行原理和基本并发设计来对比分析&#xff0c;看看到底怎么回事。 运行原理对比 java java 中 jdk 已经帮我们屏蔽操作系统区别。 只要我们下载并…...

Linux文件系统原理

Linux文件系统 冯诺依曼在1945年提出计算机的五大组成部分 运算器&#xff1a;CPU 控制器&#xff1a;CPU 存储器&#xff1a;内存和硬盘 输入设备&#xff1a;鼠标、硬盘 输出设备&#xff1a;显示器一、硬盘结构 机械硬盘结构 扇区&#xff1a;硬盘的最小存储单位&#xff…...

初识Spring Cache:如何简化你的缓存处理?

文章目录 1、Spring Cache介绍2、 常用注解3、 使用案例 1、Spring Cache介绍 Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的…...

攻防世界[GoodRe]

攻防世界[GoodRe] 学到知识&#xff1a; 逆向的精髓&#xff1a;三分懂&#xff0c;七分蒙。TEA 算法快速识别&#xff08;蒙&#xff09;&#xff1a; 数据处理的形式&#xff1a;进入加密时的数据和加密结束后的数据&#xff0c;处理时数据的分组等等&#xff0c;都能用来…...

IntelliJ IDEA实用插件:轻松生成时序图和类图

IntelliJ IDEA生成时序图、类图 一、SequenceDiagram1.1 插件安装1.2 插件设置1.3 生成时序图 二、PlantUML Integration2.1 插件安装2.2 插件设置2.3 生成类图 在软件建模课程的学习中&#xff0c;大家学习过多种图形表示方法&#xff0c;这些图形主要用于软件产品设计。在传统…...

SpringBoot + Mybatis-Plus中乐观锁实现

悲观锁 悲观锁是一种悲观思想&#xff0c;它认为数据很可能会被别人所修改 所以总会对数据进行上锁&#xff0c;读操作和写操作都会上锁&#xff0c;性能较低&#xff0c;使用较少&#xff01; 乐观锁 乐观锁是一种乐观思想&#xff0c;它认为数据并不一定会被别人所修改 所以…...

设计模式深度解析:分布式与中心化,IT界两大巨头“华山论剑”

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨IT界的两大巨头交锋✨ &#x1f44b; 在IT界的广阔天地中&#xff0c;有两座…...

转行一年了

关注、星标公众号&#xff0c;直达精彩内容 ID&#xff1a;技术让梦想更伟大 整理&#xff1a;李肖遥 来公司一年了。 说是转行其实还是在半导体行业&#xff0c;熟悉我的朋友知道 &#xff0c;我在18年开始进入半导体行业&#xff0c;那个时候想着行业很重要&#xff0c;站对了…...

【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化实战指南与疑难解析

1. 认识璞致PZ-ZU47DR-KFB开发板与QSPI Flash固化 第一次拿到璞致PZ-ZU47DR-KFB开发板时&#xff0c;我就被它的硬件配置震撼到了。这块板子搭载的是Xilinx ZYNQ UltraScale RFSoC XCZU47DR芯片&#xff0c;集成了4核Cortex-A53处理器和FPGA可编程逻辑&#xff0c;还自带8通道5…...

【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析

前言在 Linux 后端开发中&#xff0c;日志系统不仅要能 “写得快”&#xff0c;更要能 “管得好”—— 比如日志文件过大导致磁盘占满、跨天日志混在一起难以排查、多线程写入乱码、崩溃后日志丢失等问题&#xff0c;都需要一个专业的 “文件管理器” 来解决。本文的核心主角 L…...

室内无人机自主定位:融合Mid360激光雷达与光流传感器的无GPS导航实践

1. 室内无人机定位的挑战与解决方案 在仓库巡检、隧道勘测等室内场景中&#xff0c;无人机最头疼的问题就是失去GPS信号后的定位难题。传统光流传感器虽然能提供相对运动信息&#xff0c;但在长距离飞行时误差会不断累积&#xff1b;而激光雷达虽然精度高&#xff0c;但单独使用…...

WeReader:革新微信读书体验的高效笔记管理工具

WeReader&#xff1a;革新微信读书体验的高效笔记管理工具 【免费下载链接】wereader 一个浏览器扩展&#xff1a;主要用于微信读书做笔记&#xff0c;对常使用 Markdown 做笔记的读者比较有帮助。 项目地址: https://gitcode.com/gh_mirrors/wer/wereader 你是否曾为微…...

多个自媒体账号如何高效管理:AI+工具+方法

你可曾有过这般情形&#xff1f;早晨才刚给公众号弄好稿子&#xff0c;到了中午就得登录知乎去发布问答&#xff0c;下午还得切换到百家号去瞧瞧是否被收录&#xff0c;到了晚上又忽然想起小红书还没更新……忙得那是手忙脚乱的&#xff0c;自己都不晓得哪个账号今天都发了些&a…...

从 ‘Unable to make field...‘ 错误聊聊 Java 模块化(JPMS)给 Android 开发带来的那些‘坑‘与应对策略

从 "Unable to make field..." 错误解析 Java 模块化对 Android 开发的深层影响 当你在 Android Studio 中看到 "Unable to make field private final java.lang.String java.io.File.path accessible" 这样的错误时&#xff0c;表面上看是一个简单的反射访…...

HTML怎么显示导出文件体积优化建议_HTML压缩图片选项【操作】

优化图片需用现代格式&#xff08;如WebP&#xff09;合理尺寸有损压缩&#xff1b;HTML压缩只删注释、合并空白、移除可选闭合标签&#xff1b;构建时图片须经imagemin插件压缩&#xff0c;CSS背景图也要走loader处理。HTML里怎么让图片变小却不模糊导出体积大&#xff0c;八成…...

类型声明不再“形同虚设”:PHP 8.9运行时类型验证增强如何让CI失败率下降67%?

第一章&#xff1a;PHP 8.9类型系统增强的演进背景与核心价值PHP 类型系统自 PHP 7 引入标量类型声明和返回类型以来&#xff0c;持续向静态可分析、运行时安全、开发者友好的方向演进。PHP 8.9 并非官方已发布的版本&#xff08;截至 2024 年&#xff0c;PHP 最新稳定版为 8.3…...

解锁Android黑科技:动态加载Activity,让你的App秒变变形金刚

解锁Android黑科技&#xff1a;动态加载Activity&#xff0c;让你的App秒变变形金刚 一、开篇引入 在如今的移动应用开发领域&#xff0c;动态加载 Activity 技术在 Android 开发中占据着举足轻重的地位。想象一下&#xff0c;你使用的 360 安全卫士&#xff0c;在不重新安装…...

基于CANopen协议,实现机器人500-1000Hz高频控制(附实操实例) (1)

机器人控制:基于CANopen协议的高频控制(大于500Hz)(附实操实例) 在机器人控制领域,高频控制(500-1000Hz)是实现高精度轨迹跟踪、快速动态响应的核心需求——无论是协作机器人的柔性交互、工业机械臂的高速分拣,还是AGV的精准定位,都需要控制器与执行器(伺服驱动器、…...