天天看點

程式設計基礎(名字空間)

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;

繼續閱讀