1、背景介紹
2、更好的C
c是屬于編譯行語言,c++是強類型語言
c和c++的差別
3、名字空間
c++基礎知識----名字空間 http://blog.csdn.net/tjhgltt/article/details/2364228
引入的理由:”C++裡引入namespace的目的就是為了避免污染全局名字空間,簡單地說,就是為了避免和減少命名沖突。“
一旦一個程式寫大了,就很難避免重名,特别是多人合作的情況下。
過去C中的解決方法隻有靠人為的注意,并且加長名字,以避免重名。
這樣做會使得一些名字看上去沒有意義或者難以了解,
而程式員在寫程式的時候,也受這個問題的限制,不能自由地命名自己使用的變量或者函數。
而有了namespace就不存在這些問題了,這就是C++引入namespace這個概念所帶來的便利。"
這麼看來,C++采用名字空間的辦法,
解決了“相同的函數名,或變量名,或者兩個不同的庫裡面有相同的函數名,這樣的話,就會引起混亂,
不是連接配接不上,就是造成程式死掉”的這個問題,通過不同的名字空間,我們可以起相同的函數名和變量名,這樣不會引起沖突。
一共三種方法
namespace first
{
int x = 1;
int y = 2;
}
namespace second
double x = 1.0;
double y = 2.0;
1)、直接輸出
cout << first::x;
2)、加一個using,就是名字空間指令
using first; //名字空間指令;
cout << x; //x=1;
cout << second::y //y = 2.0;
3)、名字空間聲明
using first::x;
cout << x; //x = 1;
cout << y; //錯誤
cout << second::y; //y = 2.0;
相關:
1、名字空間可以同名,裡面的内容是可以相通的;
如:namespace A
inx g_x = 10;
void addX(int x)
{
g_x += x;
}
namespace A
void subX(int x)
g_x -= x;
2、using namespce std;
其中std中包含了标準庫中所有的辨別符。
每一次在程式之前加了這一句話,就是的std中的辨別符都曝光了,相當于一個全局變量,以至于 std::cout << "x = " << 10 << std::endl直接寫成 cout << "x = " << 10 <<endl;
3、無名名字空間一般用于全局變量和名字空間中的變量同名
如:
int g_data = 10;
namespace third
int g_data = 20;
void out()
{
cout << ::g_data; //10
cout << g_data; //20
}
int main()
using namespace third;
cout << ::g_data; //10
cout << third::g_data; //20
4、嵌套,名字空間可以指派(=操作符重載)
namespace B
namespace C
{
int d = 10;
}
嵌套cout << A::B::C::d; //輸出10
指派namespace E = A::B::C;