成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

C++命名空間與缺省參數(shù)

stdying / 1504人閱讀

摘要:訪問命名空間的內(nèi)容時(shí),指定命名空間。是的縮寫,意思是標(biāo)準(zhǔn)命名空間。缺省參數(shù)缺省參數(shù)概念缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn)。

命名空間

為什么引入命名空間

在C++中,變量、函數(shù)和類都是大量存在的,這些變量、函數(shù)和類的名稱將都存在于全局作用域中,可能會導(dǎo)致很多沖突。使用命名空間的目的是對標(biāo)識符的名稱進(jìn)行本地化,以避免命名沖突或名字污染,namespace關(guān)鍵字的出現(xiàn)就是針對這種問題的。

	int a = 10;		int main(void)	{		int a = 10;		return 0;	}

這里一個(gè)a是全局變量,一個(gè)a是局部變量??梢跃幾g通過。

	int a = 10;	int a = 20;		int main(void)	{		int a = 10;		return 0;	}

當(dāng)有兩個(gè)全局變量a時(shí),命名沖突了,編譯不過。
舉例說明,假如1班和2班都有名字叫張三的同學(xué),當(dāng)一班和二班站在一起時(shí),老師叫張三就會出現(xiàn)歧義,不知道叫的是一班的還是二班的。但是如果老師叫一班的張三或二班的張三,就不會出現(xiàn)歧義和錯誤。這里的一班和二班就相當(dāng)于命名空間。

命名空間定義

定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對{}即可,{}中即為命名空間的成員。

	namespace bc	//bc為命名空間的名字	{		//命名空間的成員		int a = 100;			int ADD(int a, int b)		{			return a + b;		}	}

命名空間中的內(nèi)容,可以是類、變量、函數(shù)、模板和其它命名空間。
命名空間可以嵌套

	namespace FPX	{		int a = 5;		namespace doinb		{			int b = 5;			void Champion()			{				cout << "FPX2021WIN" << endl;         			}		}	}

同一個(gè)工程中允許存在多個(gè)相同名稱的命名空間,編譯器最后會合成同一個(gè)命名空間中。
同時(shí)也意味著在名字相同的命名空間中的命名是不能沖突的。

使用命名空間

有以下命名空間:

	namespace bc	{		int m = 10;		int n = 20;			int Add(int a, int b)		{			return a + b;		}			int Max(int a, int b)		{			return a > b ? a : b;		}	}

1.使用using聲明將命名空間全部展開到全局。

	using namespace bc;

這樣命名空間中的內(nèi)容就可以像全局一樣直接使用。

	int a = 10;	int b = 20;	cout << Add(a, b) << endl;	cout << Max(a, b) << endl;

這種方法的優(yōu)點(diǎn)是使用起來非常方便,缺點(diǎn)是把自己的定義都暴露出去了,導(dǎo)致命名污染。
2.訪問命名空間的內(nèi)容時(shí),指定命名空間。

	int a = 10;	int b = 20;	cout << bc::Add(a, b) << endl;	cout << bc::Max(a, b) << endl;

::為作用域運(yùn)算符,前綴bc::指出函數(shù)Add和Max是定義在名為bc的命名空間中的。通過作用域運(yùn)算符(::)來指出我們想使用定義在命名空間bc中的名字Add和Max。
這種方法的優(yōu)點(diǎn)是不存在命名污染,缺點(diǎn)是用起來太麻煩,每個(gè)都要去指定命名空間。
3.可以把常用的展開
比如Add函數(shù)是常用的:

	using bc::Add;

以后使用Add函數(shù)時(shí)就不需要指定命名空間。
這種方法不會造成大面積的命名污染,把常用的展開,使用時(shí)也很方便。
位于頭文件的代碼一般來說不應(yīng)該使用using聲明。因?yàn)轭^文件的內(nèi)容會拷貝到所有引用它的文件中,如果頭文件里有某個(gè)using聲明,那么每個(gè)使用了該頭文件的文件就都會有這個(gè)聲明。對于某些程序來說,由于不經(jīng)意間包含了一些名字,反而可能產(chǎn)生名字沖突。

標(biāo)準(zhǔn)命名空間

C++ 引入了命名空間的概念,計(jì)劃重新編寫庫,將類、函數(shù)、宏等都統(tǒng)一納入一個(gè)命名空間,這個(gè)命名空間的名字就是std。std 是 standard 的縮寫,意思是“標(biāo)準(zhǔn)命名空間”。

缺省參數(shù)

缺省參數(shù)概念

缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該默認(rèn)值,否則使用指定的實(shí)參。

	void TestFunc(int a = 0)	//參數(shù)缺省值	{		cout << a << endl;	}		int main(void)	{		TestFunc();		//沒有傳參數(shù),使用參數(shù)的默認(rèn)值		TestFunc(10);	//傳參數(shù)時(shí),使用指定的參數(shù)		return 0;	}

缺省參數(shù)分類

全缺省參數(shù)

所有的參數(shù)都給出缺省值

	void TestFunc(int a = 10, int b = 20, int c = 30)	{		cout << "a = " << a << endl;		cout << "b = " << b << endl;		cout << "c = " << c << endl;	}

半缺省參數(shù)

部分參數(shù)給出缺省值

	void TestFunc(int a, int b = 10, int c = 20)	{		cout << "a = " << a << endl;		cout << "b = " << b << endl;		cout << "c = " << c << endl;	}

需要注意的是,
半缺省參數(shù)必須從右往左依次來給出,不能間隔著給。
缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn)。
缺省值必須是常量或者全局變量。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/121669.html

相關(guān)文章

  • C++初階】 關(guān)鍵字,命名空間,缺省參數(shù),IO和函數(shù)重載

    摘要:事實(shí)上語言當(dāng)中有的內(nèi)容,比如函數(shù)循環(huán)結(jié)構(gòu)體宏等等內(nèi)容,也都有,所以大家千萬不要認(rèn)為語言白學(xué)了哈因?yàn)橹耙呀?jīng)完整更新過語言的博客有需要可以往前翻,所以這里直接介紹相對語言當(dāng)中新增的內(nèi)容,而本章引入的內(nèi)容是的關(guān)鍵字命名空間缺省參數(shù)函數(shù)重載。 ...

    winterdawn 評論0 收藏0
  • C++從0到1】新手都能看懂的C++入門(上篇),建議收藏

    摘要:上面這三種均不造成重載,現(xiàn)在來說明原因。結(jié)論對于引用返回,返回的對象必須是棧幀銷毀后還存在的。全局,靜態(tài),未銷毀的函數(shù)棧幀當(dāng)中的都是可以的指針與引用如圖兩者底層實(shí)現(xiàn)差不多,引用是用指針模擬的。不建議聲明和定義分離,分離會導(dǎo)致鏈接錯誤。 ...

    xcold 評論0 收藏0
  • C++C++快速入門

    摘要:中包含的即為命名空間的成員。使用輸入輸出更方便,不需增加數(shù)據(jù)格式控制,比如整形,字符可以連續(xù)輸出,表示換行缺省參數(shù)備胎,就是給汽車準(zhǔn)備一個(gè)備用輪胎,一旦那個(gè)輪子爆胎或者出了問題,備用輪胎就方便及時(shí)地取而代之,汽車就不至于中途拋錨。 ...

    TalkingData 評論0 收藏0
  • C++入門—namespace的使用傻傻分不清楚&amp;C++中函數(shù)的參數(shù)也可以配備胎&a

    摘要:使用輸入輸出更方便,不需增加數(shù)據(jù)格式控制,比如整形,字符等缺省參數(shù)備胎缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。此外,函數(shù)重載要求參數(shù)不同,而跟返回值沒關(guān)系。 ...

    pingan8787 評論0 收藏0
  • 關(guān)于C++基礎(chǔ)的一些“碎碎念”

    摘要:使用命名空間的目的是對標(biāo)識符的名稱進(jìn)行本地化,以避免命名沖突或名字污染,關(guān)鍵字的出現(xiàn)就是針對這種問題的。缺省參數(shù)概念缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。 ...

    Jackwoo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<