寫在前面:
早上學(xué)習(xí)STL,因?yàn)闆]有加入代碼using namespace std 導(dǎo)致錯(cuò)誤,發(fā)現(xiàn)對(duì)using namespace std 的用法不是很清楚,找了資料補(bǔ)課。
using namespace std 的用法
摘自
using namespace std;用的并不少!
---------------------------------------------------------------
實(shí)際上就是告訴編譯器,你類型是什么,在哪能找到。
常用的是using namespace std,就是說用C++的標(biāo)準(zhǔn)名字空間。
你也可以引用你自己的名字空間。比如說:
import "C:\\MyTest\\test.tlb"
using namespace CMyTest
就可以引用CMyTest內(nèi)的各個(gè)類型名
看C++ prime
---------------------------------------------------------------
聲明該文件使用C++標(biāo)準(zhǔn)庫吧!
比如
#include <iostream>
using namespace std;
void main()
{
cout << "hello!" << endl;
}
如果不用using namespace std;這句,那么
std::cout << "hello!" <<endl;
這是名字空間的問題!具體參看有關(guān)書籍吧,新版的C++ 書應(yīng)該都有介紹的!
---------------------------------------------------------------
using 指示符!
這是個(gè)名字空間問題,是標(biāo)準(zhǔn)C++引入的新概念!
具體在《C++Primer》第8.6節(jié)有詳細(xì)說明!
---------------------------------------------------------------
因?yàn)闃?biāo)準(zhǔn)庫非常的龐大,所程序員在選擇的類的名稱或函數(shù)名時(shí)就很有可能和標(biāo)準(zhǔn)庫中的某個(gè)名字相同。所以為了避免這種情況所造成的名字沖突,就把標(biāo)準(zhǔn)庫中的一切都被放在名字空間std中。但這又會(huì)帶來了一個(gè)新問題。無數(shù)原有的C++代碼都依賴于使用了多年的偽標(biāo)準(zhǔn)庫中的功能,他們都是在全局空間下的。
所以就有了<iostream.h>和<iostream>等等這樣的頭文件,一個(gè)是為了兼容以前的C++代碼,一個(gè)是為了支持新的標(biāo)準(zhǔn)。
---------------------------------------------------------------
名字空間,實(shí)質(zhì)上也是為了方便程序在不同平臺(tái)上正確的運(yùn)行。
---------------------------------------------------------------
namespace是為了解決C++中的名字沖突而引入的。
什么是名字沖突呢?比如,在文件x.h中有個(gè)類MyClass,
在文件y.h中也有個(gè)類MyClass,而在文件z.cpp中要同時(shí)
引用x.h和y.h文件。顯然,按通常的方法是行不能的,
那怎么辦呢?引入namespace即可。例如:
在x.h中的內(nèi)容為
// x.h
namespace MyNamespace1
{
class MyClass
{
public:
void f();
private:
int m;
}
};
在y.h中的內(nèi)容為
// y.h
namespace MyNamespace2
{
class MyClass
{
public:
void f();
private:
int m;
}
};
然后在z.cpp中引入x.h和y.h
// z.cpp
#include "x.h"
#include "y.h"
void z::f()
{
//聲明一個(gè)文件x.h中類MyClass的實(shí)例x
MyNamespace1::MyClass x;
//聲明一個(gè)文件x.h中類MyClass的實(shí)例x
MyNamespace2::MyClass y;
//調(diào)用文件x.h中的函數(shù)f
x.f();
//調(diào)用文件y.h中的函數(shù)f
y.f();
}
名字空間實(shí)質(zhì)上是一個(gè)作用域。
通過上面的一個(gè)實(shí)例應(yīng)該知道名字空間的作用了吧