C++语言基础(1)-命名空间
?
一個(gè)中大型軟件往往由多名程序員共同開(kāi)發(fā),會(huì)使用大量的變量和函數(shù),當(dāng)有兩個(gè)人都同時(shí)定義了一個(gè)名字相同的全局變量或函數(shù)的時(shí)候,若是把他們的代碼整合在一塊編譯,此時(shí)編譯器就會(huì)提示變量或函數(shù)重復(fù)定義,C++為了解決這個(gè)問(wèn)題,便引用了命名空間(namespace)的概念。
一.語(yǔ)法格式
namespace 是C++中的關(guān)鍵字,用來(lái)定義一個(gè)命名空間,語(yǔ)法格式為:
namespace name{//variables, functions, classes }name是命名空間的名字,它里面可以包含變量、函數(shù)、類(lèi)、typedef、#define 等,最后由{ }包圍。
注意:也可以不用寫(xiě)name,若定義了一個(gè)沒(méi)有名字的命名空間,則其內(nèi)部的代碼只能在這個(gè)文件里面用。
namespace {int myAge = 0; }二.使用方法
若要使用命名空間中定義的變量或函數(shù),需要指名它們所在的命名空間,如:
#include <stdio.h> #include <iostream>using namespace std;namespace DJ{int myAge = 0; }int main() {DJ::myAge = 5;cout << "my age is: "<< DJ::myAge << endl;return 0; }::是一個(gè)新符號(hào),稱(chēng)為域解析操作符,在C++中用來(lái)指明要使用的命名空間。
還可以這樣寫(xiě)(直接使用using聲明):
#include <stdio.h> #include <iostream>using namespace std;namespace DJ{int myAge = 0; }int main() {using DJ::myAge;myAge = 5;cout << "my age is: "<< myAge << endl;return 0; }在代碼的開(kāi)頭使用using聲明DJ:myAge,這樣如果接下來(lái)的代碼中出現(xiàn)了未指明命名空間的myAge,就使用DJ:myAge,不過(guò)要使用別的命名空間中定義的myAge,則仍然需要顯示聲明。
還可以寫(xiě)成這樣:
#include <stdio.h> #include <iostream>using namespace std;namespace DJ{int myAge = 0; }int main() {using namespace DJ;myAge = 5;cout << "my age is: "<< myAge << endl;return 0; }如果命名空間 DJ中定義的其他的變量,樣具有 myAge變量的效果。
命名空間內(nèi)部不僅可以聲明或定義變量,對(duì)于其它能在命名空間以外聲明或定義的名稱(chēng),同樣也都能在命名空間內(nèi)部進(jìn)行聲明或定義,例如類(lèi)、函數(shù)、typedef、#define 等都可以出現(xiàn)在命名空間中。
三.std命名空間
新建一個(gè)純C++項(xiàng)目(QT)時(shí),QT默認(rèn)新建的main.cpp文件如下:
#include <iostream>using namespace std;int main() {cout << "Hello World!" << endl;return 0; }其實(shí)是省略了cout的命名空間,也可以寫(xiě)成這樣:
#include <iostream>int main() {std::cout << "Hello World!" << std::endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的C++语言基础(1)-命名空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: CSS 3之美化表格样式(二)
- 下一篇: POJ-1236 Network of
