C++重新认知:namesapce

0、引言 为什么要用到命名空间

想必我们在写C++语言时经常在main.cpp文件内写下using namespace std 这句代码,这句代码有何作用呢?

其实写上这句代码后,我们就会使用std的命名空间。

好处:可以帮我们节省很多不必要的代码(std::就可以省去不写了)。

坏处:容易造成命名空间污染。

当我们写出同名的变量或者函数或者结构体时,一般境况下就会报错,但是我们希望都保留下来,并且在需要的时候调用他们,如何保留并且调用我们想要的,这里就用到了namespace,这也是设计的初衷——解决命名冲突的问题

一、namespace

在这里插入图片描述

当我们有两个相同变量名时编译器就会报错。

1.1 命名空间声明格式

namespace _Name
{
}

这里可以看到,两个相同的变量都保留了,不过在使用我们namespace中的变量时需要 _Name:: 变量
在这里插入图片描述

1.2 ::运算符

::运算符是一个作用域,如果::前面什么都没有加代表的是全局作用域

在这里插入图片描述

命名空间加上::就是我们命名空间的作用域了。

1.3 命名空间的使用

  • 命名空间的定义必须定义在全局范围

  • 命名空间下可以存放变量、函数、结构体、类

  • 命名空间可以重名、重名的会自动合并空间

在这里插入图片描述

  • 命名空间可以嵌套命名空间

在这里插入图片描述

  • 命名空间可以取别名

  • 命名空间可以没有名字 ,没有名字相当于给命名空间 内的所有成员加上了static修饰相当于只能被当前文件调用,属于内部链接属性 (就近原则)

在这里插入图片描述

在这里插入图片描述

  • 命名空间中的函数可以先声明,在外部定义,定义时需要加上命名空间作用域
    在这里插入图片描述

  • 命名空间中的函数可以先声明,在外部定义,定义时需要加上命名空间作用域

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter性能测试常用并发线程组

每秒完成事务数:作用是统计各个事务每秒钟成功的事务个数添加方式:测试计划 --> 线程组--> 监听器-->Transactions per Second 每秒字节吞吐量:作用是查看服务器吞吐流量(单位/字节)添加方式:测试…

VSCode使用MinGW编译器,配置C/C++环境

目录 一、安装VSCode 二、安装MinGW编译器 1、配置环境变量 2、测试配置是否成功 三、配置VSCode 1、安装所需扩展 2、新建代码存放文件夹 3、添加配置文件 4、配置文件内容 (1)c_cpp_properties.json (2)launch.json …

IPv6路由协议---IPv6动态路由(OSPFv3-4)

OSPFv3的链路状态通告LSA类型 链路状态通告是OSPFv3进行路由计算的关键依据,链路状态通告包含链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。 OSPFv3的LSA头仍然保持20字节,但是内容变化了。在LSA头中,OSPFv2的LS age、Advertising Router、LS Sequence…

three.js : tweenjs创建threejs动画

效果&#xff1a; 代码 <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div> <div class"box-right"><…

Thrift接口测试实践

Thrift是Facebook实现的一种高效的并且支持多种主流编程语言的远程服务调用的框架&#xff0c;Thrift服务器包含了用于绑定协议和传输层的基础架构&#xff0c;也是基于HTTP/2.0的版本实现&#xff0c;Thrift提供阻塞&#xff0c;非阻塞&#xff0c;单线程&#xff0c;多线程的…

STM32 使用 DS18B20 温度传感器实现环境温度监测

为了实现环境温度监测系统&#xff0c;我们可以利用STM32微控制器和DS18B20数字温度传感器。在本文中&#xff0c;我们将介绍如何通过STM32微控制器读取DS18B20传感器的温度数据&#xff0c;并展示一个简单的示例代码。 1. 系统概述 环境温度监测系统旨在使用DS18B20数字温度…

【Vue】文件管理页面制作

<template><div><div style"margin: 10px 0"><el-input style"width: 200px" placeholder"请输入名称" suffix-icon"el-icon-search" v-model"name"></el-input><el-button class"ml…

【ThreeJS入门——】WEB 3D可视化技术——threejs

简介 网页上已经可以做出很多复杂的动画&#xff0c;精美的效果。下图就是通过WebGL在网页中绘制高性能的3D图形。 threejs是一个让用户通过javascript入手进入搭建webgl项目的类库。 1、搭建第一个场景和物体 三维的物体要渲染在二维的屏幕上。首先要创建一个场景来放置物体…

bootstrap搭建一个简单的官网案例附代码

bootstrap搭建一个简单的官网案例附代码 效果常用属性完整代码 效果 大概的效果如下 主要都是用bootstrap的代码实现的 网站是照着 b站视频做的 查看视频教程 建议自己先看一遍文档再跟着视频写&#xff0c;不然可能看不懂 bootstarp中文文档 logo是从别人的站上扒的有点不太协…

zabbix监控windows主机

下载安装zabbix agent安装包 Zabbix官网下载地址: https://www.zabbix.com/cn/download_agents?version5.0LTS&release5.0.40&osWindows&os_versionAny&hardwareamd64&encryptionOpenSSL&packagingMSI&show_legacy0 这里使用zabbix agent2 安装 …

jmeter命令执行脚本

小结&#xff1a; 并发数怎么来的&#xff1f; 并发的TPS总请求数/总时间 二八原则&#xff1a;并发的TPS总请求数*0.8/总时间*0.2 稳定性测试的并发数&#xff1a;有效总请求数*0.8/有效总时间*0.2 压力测试的并发数&#xff1a;峰值请求数/峰值时间*系数

Java微服务系列之 ShardingSphere - ShardingSphere-JDBC

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列专栏目录 [Java项…