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

C++命名空間和缺省參數(shù)介紹

 更新時間:2022年01月26日 10:50:23   作者:sasorit  
這篇文章主要介紹了C++命名空間和缺省參數(shù),使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突或名字污染,namespace關(guān)鍵字的出現(xiàn)就是針對這種問題的,缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認值,更多詳細內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容

一、命名空間

為什么引入命名空間

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

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

這里一個a是全局變量,一個a是局部變量。可以編譯通過。

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

當有兩個全局變量a時,命名沖突了,編譯不過。

舉例說明,假如1班和2班都有名字叫張三的同學,當一班和二班站在一起時,老師叫張三就會出現(xiàn)歧義,不知道叫的是一班的還是二班的。但是如果老師叫一班的張三或二班的張三,就不會出現(xiàn)歧義和錯誤。這里的一班和二班就相當于命名空間。

命名空間定義

定義命名空間,需要使用到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; ? ? ? ??
?? ??? ??? ?}
?? ??? ?}
?? ?}

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

使用命名空間

有以下命名空間:

  

 ?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)點是使用起來非常方便,缺點是把自己的定義都暴露出去了,導致命名污染。

2.訪問命名空間的內(nèi)容時,指定命名空間。

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

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

3.可以把常用的展開

比如Add函數(shù)是常用的:

?? ?using bc::Add;

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

標準命名空間

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

二、缺省參數(shù)

缺省參數(shù)概念

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

  

?void TestFunc(int a = 0)?? ?//參數(shù)缺省值
?? ?{
?? ??? ?cout << a << endl;
?? ?}
?? ?
?? ?int main(void)
?? ?{
?? ??? ?TestFunc();?? ??? ?//沒有傳參數(shù),使用參數(shù)的默認值
?? ??? ?TestFunc(10);?? ?//傳參數(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ù)聲明和定義中同時出現(xiàn)。
缺省值必須是常量或者全局變量。

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

相關(guān)文章

  • 淺析C語言中對于char*和char[]的理解

    淺析C語言中對于char*和char[]的理解

    char * s 只是一個保存字符串首地址的指針變量,char a[]是許多連續(xù)的內(nèi)存單元,單元中的元素是char型,char * 和 char a[]具有相同的效果,源于字符串的本質(zhì),這篇文章主要介紹了C語言中對于char*和char[]的理解,需要的朋友可以參考下
    2023-02-02
  • C++ 實現(xiàn)優(yōu)先隊列的簡單實例

    C++ 實現(xiàn)優(yōu)先隊列的簡單實例

    這篇文章主要介紹了C++ 實現(xiàn)優(yōu)先隊列的簡單實例的相關(guān)資料,希望通過本文能幫助大家實現(xiàn)優(yōu)先隊列,需要的朋友可以參考下
    2017-08-08
  • 詳解C++?functional庫中的仿函數(shù)使用方法

    詳解C++?functional庫中的仿函數(shù)使用方法

    仿函數(shù)(functor)又稱之為函數(shù)對象(function?object),實際上就是?重載了()操作符?的?struct或class。本文將詳細講解C++中仿函數(shù)的使用方法,需要的可以參考一下
    2022-04-04
  • C++實現(xiàn):螺旋矩陣的實例代碼

    C++實現(xiàn):螺旋矩陣的實例代碼

    螺旋矩陣是指一個呈螺旋狀的矩陣,它的數(shù)字由第一行開 始到右邊不斷變大,向下變大, 向左變大,向上變大,如此循環(huán)。
    2013-03-03
  • 一文掌握 C++ 智能指針的使用方法

    一文掌握 C++ 智能指針的使用方法

    C++11 引入了智能指針的概念,使用了引用計數(shù)的想法,讓程序員不再需要關(guān)心手動釋放內(nèi)存。關(guān)于C++指針得內(nèi)容下面文章將為大家做一個詳細介紹
    2021-09-09
  • 詳解state狀態(tài)模式及在C++設計模式編程中的使用實例

    詳解state狀態(tài)模式及在C++設計模式編程中的使用實例

    這篇文章主要介紹了state狀態(tài)模式及在C++設計模式編程中的使用實例,在設計模式中策略用來處理算法變化,而狀態(tài)則是透明地處理狀態(tài)變化,需要的朋友可以參考下
    2016-03-03
  • C++中rapidjson組裝繼續(xù)簡化的方法

    C++中rapidjson組裝繼續(xù)簡化的方法

    今天小編就為大家分享一篇關(guān)于C++中rapidjson組裝繼續(xù)簡化的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • C++編程中的函數(shù)指針初步解析

    C++編程中的函數(shù)指針初步解析

    這篇文章主要介紹了C++編程中的函數(shù)指針初步解析,函數(shù)指針在C語言和C++學習中都是非常重要的知識,需要的朋友可以參考下
    2016-04-04
  • 詳解C++動態(tài)內(nèi)存管理

    詳解C++動態(tài)內(nèi)存管理

    這篇文章主要為大家詳細介紹了C++中動態(tài)內(nèi)存管理相關(guān)資料,文中示例代碼講解詳細,對我們學習C++具有一定幫助,感興趣的小伙伴快跟隨小編一起學習
    2023-05-05
  • 一元多項式加法運算

    一元多項式加法運算

    今天小編就為大家分享一篇關(guān)于一元多項式加法運算,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論