【C++】从认识using namespace std开始进入C++的学习

这篇具有很好参考价值的文章主要介绍了【C++】从认识using namespace std开始进入C++的学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C++】从认识using namespace std开始进入C++的学习,C++,c++,学习,开发语言,笔记,c语言

👀樊梓慕:个人主页

 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》

🌝每一个不曾起舞的日子,都是对生命的辜负


📣📣📣今天博主就正式开始学习C++啦,感谢大家在C语言阶段的一路陪伴📣📣📣

🌠编程之路刚刚开始🌠

🚨革命尚未成功,同志仍需努力🚨


目录

前言

1.命名空间

2.怎样使用命名空间

3.using namespace std的作用

4.什么场景下适合展开标准库命名空间

5.std命名空间的使用惯例


前言

很多人在刚刚开始学习C++的时候,老师一般会让大家直接加上这样一段代码:

using namespace std;

 可究竟为什么要加上这段代码??

也许你的老师并没有展开细讲

那么今天,博主就会从这一最初的疑惑开始,与大家一起进入C++的学习。


欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================

GITEE相关代码:🌟fanfei_c的仓库🌟

=========================================================================


1.命名空间namespace

学习到现在的阶段,大部分人可能还没有接触甚至没有见过比较大型的项目。

在一些大型项目中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。

通俗的讲,就是重名。

C++之父·本贾尼在设计C++语言时就发现了这一问题,命名空间就是他提出的解决方案。

namespace顾名思义就是命名空间,在C++中namespace是一个关键字,就像整型int,字符型char一样。

也就是说,本贾尼为了避免命名冲突或名字污染等问题,专门写了一个关键字namespace,将变量、函数和类的名称可以放在一个空间里,从而就解决了重名的问题。


🔎那么我们接下来就来看一看命名空间是如何使用的🔍


2.怎样使用命名空间

首先命名空间中可以定义变量/函数/类型,比如

namespace f1
{
	//变量
	int rand = 10;
	//函数
	int Add(int left, int right)
	{
		return left + right;
	}
	//类型
	struct Node
	{
		struct Node* next;
		int val;
	};
}

 其次命名空间可以嵌套,比如

namespace f1
{
	int a;
	int b;
	int Add(int left, int right)
	{
		return left + right;
	}
    //嵌套
	namespace f2
	{
		int c;
		int d;
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

在同一工程中,如果存在多个相同名称的命名空间,程序在执行时,会将他们合并,比如

// test.h
namespace f1
{
	int Mul(int left, int right)
	{
		return left * right;
	}
}
// test.c
namespace f1
{
	int a;
	int b;
	int Add(int left, int right)
	{
		return left + right;
	}
	namespace f2
	{
		int c;
		int d;
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

注意:大家可以将命名空间理解为作用域,一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。


如何使用命名空间中的变量、函数和类型呢


有三种方式可以使用命名空间中的内容:

(1)加命名空间名称作用域限定符::

int main()
{
	printf("%d\n", N::a);
	return 0;
}

(2)使用using将命名空间中某个成员引入

using N::b;
int main()
{
	printf("%d\n", N::a);
	printf("%d\n", b);
	return 0;
}

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

using namespce F;
int main()
{
	printf("%d\n", F::a);
	printf("%d\n", b);
	Add(10, 20);
	return 0;
}

3.using namespace std的作用

了解了上面的内容,using与namespace你就都应该了解了。

现在的问题就剩下std是什么了。

std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中。

也就是说,using namespace std就是上面讲解命名空间的使用中的第三个方式罢了。

 我们可以理解为展开,将该命名空间展开,使该命名空间中的变量、函数和类型名称暴露出来。

using namespace std的意思就是将C++标准库展开,让我们可以使用里面的各种变量、函数和类型。


4.什么场景下适合展开标准库命名空间

你一定想到了,展开命名空间是一件很不安全的做法,因为本贾尼起初设计命名空间的本意就是为了让命名空间内部的变量、函数和类型名称不冲突或不被污染。

 那么如何展开std从而让使用更加合理呢?

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

🔑🔑​​​​​​​🔑​​​​​​​那么看到这里,你的疑惑是否被解答了呢🔑🔑🔑

🌝如果有任何问题,欢迎在评论区提出,博主看到一定会认真回复的🌝


=========================================================================

如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容

🍎博主很需要大家的支持,你的支持是我创作的不竭动力🍎

🌟~ 点赞收藏+关注 ~🌟

========================================================================= 文章来源地址https://www.toymoban.com/news/detail-715160.html

到了这里,关于【C++】从认识using namespace std开始进入C++的学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++命名空间和include C++ #include<string> 和 using std::string

    1、C++中的命名空间namespace_51CTO博客_c++中的命名空间   2、 C++ #includestring 和 using std::string_yang20141109的博客-CSDN博客 //不光要加头文件,和C语言不同 #include utils/Errors.h //还要加using using android::status_t; using android::INVALID_OPERATION; using android::NO_ERROR; using android::BAD_VALUE; 3、c和c++的差

    2023年04月20日
    浏览(49)
  • c++命名空间和include C++ #include<string> 和 using std::string

    1、C++中的命名空间namespace_51CTO博客_c++中的命名空间   2、 C++ #includestring 和 using std::string_yang20141109的博客-CSDN博客 //不光要加头文件,和C语言不同 #include utils/Errors.h //还要加using using android::status_t; using android::INVALID_OPERATION; using android::NO_ERROR; using android::BAD_VALUE; 3、c和c++的差

    2023年04月20日
    浏览(49)
  • C++笔记之从使用函数指针和typedef到使用std::function和using

    参考笔记:C++笔记之从数组指针到函数数组指针(使用using name和std::function) code review!

    2024年02月15日
    浏览(43)
  • 【C++】从零开始认识泛型编程 — 模版

    送给大家一句话: 尽管眼下十分艰难,可日后这段经历说不定就会开花结果。总有一天我们都会成为别人的回忆,所以尽力让它美好吧。 – 岩井俊二 \\ ⱶ˝୧(๑ ⁼̴̀ᐜ⁼̴́๑)૭兯 //// \\ ⱶ˝୧(๑ ⁼̴̀ᐜ⁼̴́๑)૭兯 //// \\ ⱶ˝୧(๑ ⁼̴̀ᐜ⁼̴́๑)૭兯

    2024年04月28日
    浏览(35)
  • 想从事UE4开发相关工作,C++学到什么程度可以开始学习针对虚幻4的编程开发呢?

    想从事UE4开发相关工作,C++是一个必须要熟练掌握的语言。在学习C++过程中,需要掌握语法、面向对象编程、数据结构和算法等内容,这些都是开发UE4所需要的基础。 在掌握了C++基础之后,可以先从UE4的官方文档开始学习UE4的基础知识和概念。在这里,我们可以了解到UE4的整

    2024年02月06日
    浏览(51)
  • 从零开始学ZYNQ(FPGA)笔记二 | 认识学习内容

    目录 1. 认识FPGA 什么是FPGA FPGA的编程过程  2. 认识ARM 什么是ARM ARM与FPGA的区别 ARM与Linux 3. 认识ZYNQ ZYNQ与FPGA的区别 ZYNQ的\\\"ARM\\\"和\\\"FPGA\\\" 关于PL 关于PS 4. 学习用板载资源 5. 总结         FPGA是一种集成电路,它可以在制造后由客户或设计者根据需要配置电路功能 。FPGA的内部由可

    2024年02月08日
    浏览(53)
  • 【从零开始学习Redis | 第八篇】认识Redis底层数据结构(下)

    目录 前言:   ZipList: Ziplist的特性: QucikList: QuicList特征: SkipList: 跳表特征: RedisObijct:  小心得: 总结:           在现代软件开发中,数据存储和处理是至关重要的一环。为了高效地管理数据,并实现快速的读写操作,各种数据库技术应运而生。其中,Redis作为一种

    2024年04月12日
    浏览(54)
  • make 报错:’XX‘ is not a member of ‘std‘或者 ’XX‘ in namespace ‘std‘ does not name a template type 报错解决方法

    Gazebo仿真时遇到的问题, 可能情况之一是std标准库版本太低, 可以通过在CmakeLists.txt中添加语句解决: set(CMAKE_CXX_FLAGS \\\"${CMAKE_CXX_FLAGS} -std=c++17\\\") (根据自己实际情况修改,现在std的版本貌似已经到23了)

    2024年01月16日
    浏览(47)
  • Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月10日
    浏览(42)
  • [开发语言][c++]:左值、右值、左值引用、右值引用和std::move()

    写在前面: 如果你也被 左值、右值、左值引用、右值引用和std::move 搞得焦头烂额,相关概念和理解不够深入,或者认识模棱两可,那么这篇文章将非常的适合你,耐心阅读,相信一定会有所收获~~ 左值: 可以取地址、位于等号左边 – 表达式结束后依然存在的持久对象

    2024年02月02日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包