溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++命名空間namespace怎么定義

發(fā)布時間:2023-04-04 10:35:07 來源:億速云 閱讀:124 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下C++命名空間namespace怎么定義的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、命名空間的定義

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

1.一般定義

namespace test
{
    int a = 10;
    int b = 100;
    int ADD(int x, int y)
    {
        return x + y;
    }
}

2.嵌套定義

namespace test
{
    int a = 10;
    int b = 100;
    int Add(int x, int y)
    {
        return x + y;
    }
    namespace test2
    {
        int c(99);
        int d(9);
		//c++可以使用括號來進行列表初始化
        int Sub(int x, int y)
        {
            return x - y;
        }
    }
}

3.重名定義

同一個工程中允許存在多個相同名稱的命名空間,編譯器最后會合成同一個命名空間中。

例如:

namespace N1  //N1是命名空間的名稱
{
	//用花括號{ }將命名空間的內(nèi)容包起來
	//命名空間的內(nèi)容,即可以定義變量,也可以定義函數(shù)
	int a;
	int Add(int x, int y)
	{
		return x + y;
	}
}
 
namespace N1  //再次定義命名空間 N1
{
	int Mul(int x, int y)
	{
		return x * y;
	}
}

實際上等同于:

namespace N1  //N1是命名空間的名稱
{
    //用花括號{ }將命名空間的內(nèi)容包起來
    //命名空間的內(nèi)容,即可以定義變量,也可以定義函數(shù)
    int a;
    int Add(int x, int y)
    {
        return x + y;
    }
    int Mul(int x, int y)
    {
        return x * y;
    }
}

二、命名空間的使用

C++為了防止命名沖突,把自己庫里面的東西都定義在一個std的命名空間中要使用標準庫里面的東西,有三種方式:

  • 加命名空間的名稱及作用域限定符。

  • 使用using引入命名空間的成員。

  • 使用using namespace 命名空間名稱引入,將所有名稱全展開。

1.命名空間的名稱及作用域限定符

代碼如下:

namespace test
{
	int a = 10;
	int b = 100;
	int Add(int x, int y)
	{
		return x + y;
	}
	namespace test2
	{
		int c(99);
		//c++可以使用括號來進行初始化
		int d(9);
		int Sub(int x, int y)
		{
			return x - y;
		}
	}
}
int main()
{
	std::cout << test::Add(test::a, test::b) << std::endl;
	std::cout << test::test2::Sub(test::test2::c, test::test2::d) << std::endl;
	return 0;
}

指定命名空間&ndash;麻煩,每個地方都要指定,但也是最規(guī)范的方式。

2.使用using namespace 命名空間全展開

代碼如下:

using namespace std;

把std整個展開,相當于庫里面的東西全部到全局域里面去了,使用起來方便但是可能會有與自己命名空間定義的沖突,規(guī)范工程中不推薦這種,日常練習可以用這種。

3.使用using引入命名空間的成員

代碼如下:

int c = 100;
namespace N
{
	int a = 10;
	int b = 20;
	int Add(int left, int right)
	{
		return left + right;
	}
	int Sub(int left, int right)
	{
		return left - right;
	}
}
 
using std::cout;
using std::endl;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", N::b);
    printf("%d\n", N::Add(1, 2));
    printf("%d\n", N::Sub(1, 2));
    int c = 10;
    printf("%d\n", c);   //局部變量優(yōu)先,所以c為10
    printf("%d\n", ::c); //指定訪問左邊域,空白表示全局域
}

對部分常用的庫里面的東西展開->針對1和2的折中方案,項目中也經(jīng)常使用。

以上就是“C++命名空間namespace怎么定義”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI