亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ 命名空間詳解

 更新時(shí)間:2021年11月01日 11:07:19   作者:ALL IN C  
這篇文章主要介紹了C++ 命名空間的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

一、C++ 命名空間

命名空間為了大型項(xiàng)目開發(fā),而引入的一種避免命名沖突的一種機(jī)制。比如說(shuō),在一個(gè)大型項(xiàng)目中,要用到多家軟件開發(fā)商提供的類庫(kù)。在事先沒有約定的情況下,兩套類庫(kù)可能在存在同名的函數(shù)或是全局變量而產(chǎn)生沖突。項(xiàng)目越大,用到的類庫(kù)越多,開發(fā)人員越多,這種沖突就會(huì)越明顯。

1.默認(rèn)NameSpace(Global&Function)

Global scope 是一個(gè)程序中最大的 scope。也是引起命名沖突的根源。C 語(yǔ)言沒有從語(yǔ)言層面提供這種機(jī)制來(lái)解決。也算是 C 語(yǔ)言的硬傷了。Global scope 是無(wú)名的命名空間。

//c 語(yǔ)言中如何訪問被局部變量覆蓋的全局變量
int val = 200;
int main()
{
	int *p = &val;
	int val = 100;
	printf("func val = %d\n",val);
	printf("global val = %d\n",*p);
	return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int val = 200;
void func()
{
	return ;
}
int main()
{
	int val = 100;
	cout<<"func val = "<<val<<endl;
	cout<<"global val = "<<::val<<endl;
	::func(); //因?yàn)椴荒茉诤瘮?shù)內(nèi)定義函數(shù)。所以前而的::沒有意義。
	return 0;
}

輸出結(jié)果

2.語(yǔ)法規(guī)則

NameSpace是對(duì)全局(Global scope)區(qū)域的再次劃分。

1.聲明

命令空間的聲明及namespace中可以包含的內(nèi)容

namespace NAMESPACE
{
	全局變量 int a;
	數(shù)據(jù)類型 struct Stu{};
	函數(shù) void func();
	其它命名空間 namespace
}

2.使用方法

1.直接指定 命名空間: Space::a = 5;

2.使用 using+命名空間+空間元素:using Space::a;

3.使用 using +namespace+命名空間: using namespace Space;

3.支持嵌套

#include <iostream>
using namespace std;
namespace MySpace
{
	int x = 1;
	int y = 2;
	namespace Other {
		int m = 3;
		int n = 4;
	}
}
int main()
{
	using namespace MySpace::Other;
	cout<<m<<n<<endl;
	return 0;
}

4.協(xié)作開發(fā)

同名命名空間自動(dòng)合并,對(duì)于一個(gè)命名空間中的類,要包含聲明和實(shí)現(xiàn)。

a.h

#ifndef A_H
#define A_H
namespace XX {
	class A
	{
		public:
		A();
		~A();
	};
}
#endif // A_H

a.cpp

#include "a.h"
using namespace XXX
{
	A::A()
	{
	}
	A::~A()
	{
	}
}

b.h

#ifndef B_H
#define B_H
namespace XX
{
	class B
	{
		public:
		B();
		~B();
	};
}
#endif // B_

b.cpp

#include "b.h"
namespace XX {
	B::B()
	{
	}
	B::~B()
	{
	}
}

main.cpp

include <iostream>
#include "a.h"
#include "b.h"
using namespace std;
using namespace XX;
int main()
{
	A a;
	B b;
	return 0;
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

最新評(píng)論