欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++命名空間using?namespace?std是什么意思

 更新時(shí)間:2023年01月10日 12:01:02   作者:罅隙`  
namespace中文意思是命名空間或者叫名字空間,傳統(tǒng)的C++只有一個(gè)全局的namespace,下面這篇文章主要給大家介紹了關(guān)于C++命名空間using?namespace?std是什么意思的相關(guān)資料,需要的朋友可以參考下

一、 前言

C++中的using namespace std是什么意思呢?為了理解其中的含義,我們首先需要學(xué)習(xí)一個(gè)概念叫做命名空間。

我們都知道,C語言規(guī)定變量名不能與關(guān)鍵字沖突,但是并沒有規(guī)定變量名不能與庫中的變量名沖突,但這在實(shí)際的操作的過程中就會(huì)產(chǎn)生意想不到的錯(cuò)誤:

例如,將一個(gè)time變量放在main函數(shù)中,根據(jù)局部優(yōu)先的原則,time變量就會(huì)被理解為一個(gè)局部變量。但當(dāng)time作為一個(gè)全局變量出現(xiàn)的時(shí)候,由于time庫中也含有一個(gè)名叫time的函數(shù)名,頭文件被展開后,此time被理解為變量名還是函數(shù)名就會(huì)產(chǎn)生歧義。

而C++中出現(xiàn)的命名空間概念就是為了填C語言中的這個(gè)坑。

?總結(jié):同一個(gè)域中不能出現(xiàn)兩個(gè)重名的變量名/函數(shù)名,而命名空間的提出就是為了對標(biāo)識符的名稱進(jìn)行本地化,以此解決命名污染的問題,其作用就是定義一個(gè)新的作用域

二、作用域分解運(yùn)算符

在講命名空間的時(shí)候首先給大家介紹一個(gè)作用域分解運(yùn)算符 " :: "

?使用說明
  A,B表示兩個(gè)類,而在A,B中都有成員member

  • A :: member表示類A成員中的member
  • B :: member表示類B成員中的member

當(dāng)前面的類不指定的時(shí)候,默認(rèn)為全局

前面說到變量名沖突的時(shí)候遵循局部優(yōu)先原則,那么我們能不能就想訪問到全局變量呢?我們就可以通過作用域分解運(yùn)算符實(shí)現(xiàn):

三、命名空間使用介紹

namespace my_variant
{
	int time = 10;
}

int main()
{
	printf("%d", my_variant::time);
}

?基本介紹①

  • namespace是一個(gè)C++中的一個(gè)關(guān)鍵字
  • 我們將變量定義在自己創(chuàng)建的my_variant命名空間,以避免被污染
  • 訪問命名空間中的變量,需要使用作用域分解運(yùn)算符
  • 命名空間只能定義在全局,其中定義的變量為全局變量
namespace my_variant
{
	int time = 10;

	typedef struct Stu
	{
		char name[10];
		int age;
		int score;
	}Stu;
	
	namespace _variant
	{
		int Add(int a, int b)	
		{
			return a + b;
		}
	}
	
}

int main()
{
	my_variant::Stu data = {0};
	int ret = my_variant::_variant::Add(1, 2);
}

?基本介紹②

  • 從上面我們可以看到命名空間中過的內(nèi)容不只局限于變量名,也可以是函數(shù)名,類型名
  • 命名空間可以無限次嵌套命名空間,同樣的使用里面的內(nèi)容的時(shí)候也需要多次使用作用域分解運(yùn)算符——一層一層對應(yīng)的關(guān)系。使用嵌套命名空間可以解決命名空間內(nèi)部的命名沖突
  • 一個(gè)工程中同名的命名空間最終會(huì)被合并為一個(gè)命名空間

當(dāng)然我們可以看到,每次要使用命名空間中的變量都需要寫很多額外的內(nèi)容,有沒有什么辦法可以簡化操作呢——我們想要訪問命名空間中的space_b有兩種方法:

namespace space_a
{
	int a1 = 1;
	int a2 = 2;
	namespace space_b
	{
		int b1 = 10;
		int b2 = 20;
		int b3 = 30;
	}
	namespace space_c
	{
		int c1 = 5;
		int c2 = 6;
	}
}
using namespace space_a;
using namespace space_b;

方法①:首先將space_a中的內(nèi)容全部釋放出來,再釋放其中的space_b的內(nèi)容(注意順序不能顛倒,否則space_b認(rèn)不出來)

using namespace space_a:: space_b;

方法②用什么放什么。只是將space_b中全部的內(nèi)容釋放出來,而不會(huì)對其他的內(nèi)容產(chǎn)生影響。

釋放出來之后我們便可以愉快自由的使用了:

四、using namespace std

經(jīng)過上面的學(xué)習(xí),我們不難理解using name std的作用是釋放std命名空間中的變量名,函數(shù)名以及類型名,其中std是C++標(biāo)準(zhǔn)庫的命名空間。

我們在書寫代碼的時(shí)候?yàn)榱朔奖阌谑菍++標(biāo)準(zhǔn)庫中的命名空間完全展開了,但是最好的做法我想還是用什么放什么。

另外,標(biāo)準(zhǔn)C++庫中提供兩種頭文件,前面以C開頭的頭文件是支持命名空間的,而后者是不支持的。

總結(jié) 

到此這篇關(guān)于C++命名空間using namespace std是什么意思的文章就介紹到這了,更多相關(guān)C++命名空間using namespace std內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言進(jìn)階之內(nèi)存操作函數(shù)詳解

    C語言進(jìn)階之內(nèi)存操作函數(shù)詳解

    這篇文章主要為大家學(xué)習(xí)介紹了C語言中內(nèi)存操作函數(shù)(memcpy、memmove和memcmp)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-07-07
  • C++操作MySQL大量數(shù)據(jù)插入效率低下的解決方法

    C++操作MySQL大量數(shù)據(jù)插入效率低下的解決方法

    這篇文章主要介紹了C++操作MySQL大量數(shù)據(jù)插入效率低下的解決方法,需要的朋友可以參考下
    2014-07-07
  • 詳解C++ 拷貝構(gòu)造函數(shù)和賦值運(yùn)算符

    詳解C++ 拷貝構(gòu)造函數(shù)和賦值運(yùn)算符

    本文主要介紹了拷貝構(gòu)造函數(shù)和賦值運(yùn)算符的區(qū)別,以及在什么時(shí)候調(diào)用拷貝構(gòu)造函數(shù)、什么情況下調(diào)用賦值運(yùn)算符。最后,簡單的分析了下深拷貝和淺拷貝的問題。有需要的朋友可以看下
    2016-12-12
  • Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程

    Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程

    Microsoft Visual Studio 2022是Microsoft Visual Studio軟件的一個(gè)高版本,能夠編寫和執(zhí)行C/C++代碼,具有強(qiáng)大的功能,是開發(fā)C/C++程序的主流軟件,這篇文章主要介紹了Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程
    2024-01-01
  • 利用C語言實(shí)現(xiàn)順序表的實(shí)例操作

    利用C語言實(shí)現(xiàn)順序表的實(shí)例操作

    順序表是線性表中的一種重要的數(shù)據(jù)結(jié)構(gòu),也是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),所以他不僅是學(xué)習(xí)中的重點(diǎn),也是應(yīng)用開發(fā)非常常用的一種數(shù)據(jù)結(jié)構(gòu)。這篇文章介紹如何利用C語言實(shí)現(xiàn)順序表。
    2016-08-08
  • C++?雙冒號::符號詳解

    C++?雙冒號::符號詳解

    本文主要介紹了C++?雙冒號::符號詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++中vector可以作為map的鍵值實(shí)例代碼

    C++中vector可以作為map的鍵值實(shí)例代碼

    這篇文章主要介紹了C++中vector可以作為map的鍵值實(shí)例代碼,需要的朋友可以參考下
    2017-07-07
  • Qt寫入Json文件的方法詳解(含源碼+注釋)

    Qt寫入Json文件的方法詳解(含源碼+注釋)

    在Qt庫中,為JSON的相關(guān)操作提供了完整的類支持,下面這篇文章主要給大家介紹了關(guān)于Qt寫入Json文件(含源碼+注釋)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 剖析C語言關(guān)鍵字之void,const,return

    剖析C語言關(guān)鍵字之void,const,return

    這篇文章主要為大家介紹了C語言關(guān)鍵字之void,const,return,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 關(guān)于雙向鏈表的增刪改查和排序的C++實(shí)現(xiàn)

    關(guān)于雙向鏈表的增刪改查和排序的C++實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄P(guān)于雙向鏈表的增刪改查和排序的C++實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12

最新評論