Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么直接使用 using namespace std 是个坏习惯

为什么直接使用 using namespace std 是个坏习惯

作者头像
ClearSeve
发布于 2022-02-10 10:52:38
发布于 2022-02-10 10:52:38
37900
代码可运行
举报
文章被收录于专栏:ClearSeveClearSeve
运行总次数:0
代码可运行

问题

有人告诉我在代码里直接使用using namespace std;这样很不好,应该这么用,std::coutstd::cin等等。

但是为什么不好呢?

影响性能?命名冲突?

回答

这跟命名冲突有关,与性能是没有关系的。

举个例子,现在考虑你正在使用两个库,分别是foobar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using namespace foo;
using namespace bar;

不管是调用foo里的函数Blah(),还是调用bar里的Quux(),都没啥问题。

然后有一天你的库foo要升级了,里边新加了一个函数Quux(),这样就出现问题了,因为它和命名空间bar里的Quux()冲突了。想一想,如果很多函数名都冲突了, 你是不是得一个一个去解决,费时费力。

所以如果你当初没有全局导入这些名称,而是foo::Blah()bar::Quux()foo::Quux(),那么这些问题就都不存在了。

因此,不建议全局导入命名空间,而是你要用到哪个就显示指定哪个命名空间,这样的代码本身阅读性也更好。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++拓展1——namespace具体意义与用法、什么是缺省参数、函数重载 以及为什么不能再C语言中使用函数重载
说明:在全局作用域中包含着大量的类、变量、函数等,很容易发生标识符冲突,namespace关键字作用:将全局作用域分为大大小小的空间,以避免标识符冲突和命名污染。
再睡一下就好
2025/06/10
1030
C++入门篇
呀哈喽,我是结衣。 了解完C++的发展历程,我们当然也要会用C++啊。今天这篇博客就是来帮助我们来入门C++的,当然要入门C++当然也要先学会C语言啦。在我学习C++的过程中我会一直把C++博客更新下去的。
Yui_
2024/10/15
1450
C++入门篇
C++中你不知道的namespace和using的用法
5)命名空间可以取别名, namespace newname = oldname;新名字与旧名字有同等效益
莫浅子
2022/12/20
6340
C++中你不知道的namespace和using的用法
容器原理之 - namespace
namespace(命名空间) 是Linux提供的一种内核级别环境隔离的方法,很多编程语言也有 namespace 这样的功能,例如C++,Java等,编程语言的 namespace 是为了解决项目中能够在不同的命名空间里使用相同的函数名或者类名。而Linux的 namespace 也是为了实现资源能够在不同的命名空间里有相同的名称,譬如在 A命名空间 有个pid为1的进程,而在 B命名空间 中也可以有一个pid为1的进程。
用户7686797
2020/08/24
1.4K0
容器原理之 - namespace
C++命名空间namespace
什么是命名空间呢?命名空间可以看做一个声明区域,其区域内的变量在内部有效,比如假设有两个命名空间:
Cloudox
2021/11/23
4970
C++基础——C++相比C语言的新特性梳理总结(C++新特性、输入输出方式、命名空间namespace)
原文链接:https://winter.blog.csdn.net/article/details/129362280
Winter_world
2023/03/08
7660
C++基础——C++相比C语言的新特性梳理总结(C++新特性、输入输出方式、命名空间namespace)
技巧(一)、Scope and Namespace
命名空间是名字和对象的映射。也就是可以把一个namespace理解为一个字典,实际上很多当前的Python实现namespace就是用的字典。各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。
狼啸风云
2023/10/07
2910
【C++初阶】命名空间 namespace
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
aosei
2024/01/23
2560
【C++初阶】命名空间 namespace
C++之命名空间(namespace)
我们都知道在C语言中存在着命名冲突的问题(即,在一个域中不能定义同名的变量、函数等,以免造成歧义),那么C++中是否解决了这个问题?相应的它又是如何解决的呢?这就涉及了我们今天有了解的知识——命名空间(关键词:namespace)。
摘星
2023/04/28
1.1K0
php代码抄写笔记
php变量类型松散,定义时变量一个类型,在之后可以赋予另一种类型的参数。 三种作用域:local、global、static global关键字用在函数内变量前表示声明以后使用的变量为全局变量。 static关键字用在函数内变量前表示该变量在函数执行完成后不销毁,且static关键字定义的变量赋予的仅是初始值,再次执行函数,不会执行定义中的赋值操作。
木尤
2020/07/14
4.4K0
【C++干货基地】namespace超越C语言的独特魅力(文末送书)
上图数据来自TIOBE编程语言社区近几年的排行榜,在30多年的发展中,C/C++几乎一 致稳居前5。
鸽芷咕
2024/05/25
1700
【C++干货基地】namespace超越C语言的独特魅力(文末送书)
C++の命名空间namespace
这是一系列关于C++核心知识总结与分享的文章,如果你没有看过之前的文章,可以先看一下,链接在下面:
leoay
2019/12/27
1.1K0
C++の命名空间namespace
快速从C过度C++(一):namespace,C++的输入和输出,缺省参数,函数重载
📝前言: 本文章适合有一定C语言编程基础的读者浏览,主要介绍从C语言到C++过度,我们首先要掌握的一些基础知识,以便于我们快速进入C++的学习,为后面的学习打下基础。 这篇文章的主要内容有: 1,命名空间namespace 2,C++的输入和输出 3,缺省参数 4,函数重载
用户11029137
2025/03/07
2950
快速从C过度C++(一):namespace,C++的输入和输出,缺省参数,函数重载
C++ —— 关于命名空间(namespace)
在C/C++中,变量、函数和后⾯要学到的类都是大量存在的,这些变量、函数和类的名称都可能会相同而导致很多冲突。
迷迭所归处
2024/11/19
1760
namespace用法
一直不知道namespace怎么用,所以在noip吃了不小的亏,然后前天的省选模拟写了四个子程序,拼的我心累QWQ... 今天膜了一下mjt大佬,get到了新姿势 namespace的用法其实很简单 像这样 #include<iostream> namespace Attack { int a; } int main() { std::cin>>Attack::a; return 0; } 它的一大好处就是避免变量名冲突, 在信息学奥赛中一般是为了对代码进行封装, 比如说你可以用na
attack
2018/04/10
1.1K0
C++一分钟之—名空间(namespace)的作用与使用
在C++编程领域,名空间(namespace)是一个不可或缺的概念,它帮助组织代码、避免命名冲突,从而使得大型项目中的代码更加清晰和模块化。本文旨在深入浅出地探讨名空间的基本概念、作用、常见问题、易错点以及如何有效地使用它们,通过实例代码加深理解。
Jimaks
2024/06/22
8010
【C++掌中宝】从std的角度来进一步了解命名空间
C++的命名空间提供了一种强大的机制来组织代码、避免名称冲突,但在使用时也需要注意潜在的风险和问题。通过遵循下文的最佳实践,可以有效地管理项目中的命名空间,提高代码的可维护性和可靠性。
Crossoads
2024/10/22
2760
深入理解 TypeScript 中的 declare namespace
declare namespace 是 TypeScript 提供的一种语法,用于声明命名空间(namespace)。命名空间的作用是组织代码并避免全局命名冲突。当你看到 declare namespace MiniProgram.App { } 时,这是一种声明外部命名空间的方式。通过这种方式,我们可以告知 TypeScript,有一个名为 MiniProgram.App 的命名空间存在,并且可以在其中添加具体的类型、接口或变量。
编程小妖女
2025/02/01
2800
深入理解 TypeScript 中的 declare namespace
【C++】C++入门知识详解(上)
这是因为C++兼容C语言绝大多数的语法,所以C语言实现的hello world依旧可以运行,当然,C++也有自己的一套输入输出,严格来说C++版本的hello world应该像下面这样写
羚羊角
2024/10/21
8500
【C++】C++入门知识详解(上)
【C++的奇迹之旅】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式 等。熟悉C语言之后,对C++学习有一定的帮助,本章节主要目标:
学习起来吧
2024/03/30
2530
【C++的奇迹之旅】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
推荐阅读
相关推荐
C++拓展1——namespace具体意义与用法、什么是缺省参数、函数重载 以及为什么不能再C语言中使用函数重载
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档