天天看點

背景開發:核心技術與應用實踐1.1 第一個C++程式

<b>第1章</b>

c++程式設計常用技術

我們通過固定格式和固定詞彙的“語言”來影響他人,讓他人為我們做事情。語言有很多種,包括漢語、英語、法語、韓語等,雖然它們的詞彙和格式都不一樣,但是可以達到同樣的目的,我們可以選擇任意一種語言去與他人交流。同樣,我們也可以通過“語言”來影響計算機,讓計算機為我們做事情,這樣的語言就叫作程式設計語言。

c語言是1972年由美國貝爾實驗室的d.m.ritchie設計成功的,它是為計算機專業人員設計的,大多數系統軟體和許多應用軟體都是用c語言編寫的。但是随着軟體規模的增大,用c語言編寫程式漸漸顯得有些吃力了。c++也是由美國貝爾實驗室的bjarne stroustrup博士及其同僚于20世紀80年代初在c語言的基礎上開發成功的。c++保留了c語言原有的所有優點,與c語言相容,并且增加了面向對象的機制。用c語言寫的程式基本上可以不加修改地用于c++開發工具。從c++的名字可以看出它是c的超集。c++既可用于面向過程的結構化程式設計,又可用于面向對象的程式設計,是一種功能強大的混合型程式設計語言。

本章主要講述c++中的常用技術,讓讀者可迅速地、由淺入深地熟悉這門語言。

1.1 第一個c++程式

剛開始接觸一門程式設計語言,一般會從寫一個輸出hello world的程式開始。

【例1.1】 用程式輸出hello world。

#include&lt;iostream&gt;

using namespace

std;

int main()

{

     cout&lt;&lt;"hello

world."&lt;&lt;endl;

     return 0;

}

把上述程式編寫在一個叫helloworld.cpp的檔案中,并将它放到linux機器上的某個目錄下,執行g++

helloworld.cpp指令,會在該目錄下生成a.out檔案。執行./a.out指令,即可得到輸出結果:hello world.。

先看程式的第一行(#include&lt;iostream&gt;),這不是一個c++語句,是一個預處理語句,編譯器的預處理器把輸入輸出流的标準頭檔案包括在本程式中,是以不需要在句末加分号(;)。include一個檔案,就是把這個檔案的所有内容都加進來。圖1-1展示了包含檔案的過程。

如圖1-1所示,include一個.h檔案,就是等于把整個.h檔案給複制到程式中,include一個.cpp檔案也是如此。

除了#include&lt; &gt;的方式來包含一個頭檔案,還會見到#include" "的方式來包含一個頭檔案。而#include&lt; &gt;與#include" "的差別是:#include&lt; &gt;常用來包含系統提供的頭檔案,編譯器會到儲存系統标準頭檔案的位置查找頭檔案;而#include" "常用于包括程式員自己編号的頭檔案,用這種格式時,編譯器先查找目前目錄是否有指定名稱的頭檔案,然後從标準頭目錄中進行查找。

還經常會看到#include&lt;iostream&gt;和#include&lt;iostream.h&gt;的使用。事實上,#include&lt;iostream&gt;和#include&lt;iostream.h&gt;是不一樣的,因為iostream和iostream.h是兩個不同的檔案,前者沒有字尾。實際上,在你的編譯器include檔案夾裡面可以看到,兩個檔案打開後,裡面的代碼是不一樣的。字尾為.h的頭檔案在c++标準已經明确提出不再支援了,早些的c語言為了實作将标準庫功能定義在全局空間裡,聲明放在在帶.h字尾的頭檔案裡。c++标準為了和c語言差別開,也為了正确使用命名空間,規定頭檔案不再使用字尾.h。是以,當使用&lt;iostream.h&gt;時,相當于在c中調用庫函數,使用的是全局命名空間,也就是早期的c++實作方法。換句話說,iostream是iostream.h的更新版,大部分的頭檔案都有一個不帶.h擴充名的檔案與之相對應。不過有個特例,&lt;string&gt;并非&lt;string.h&gt;的更新版。

再看程式的第二行:“using namespace std;”中使用了命名空間std。命名空間是為了讓大量類名共存而不至于引起沖突而設計的。c++标準函數庫的所有元素都被聲明在一個命名空間中,這就是std命名空間。為了能夠通路它的功能,使用這條語句來表達将使用标準名空間中定義的元素。這條語句在使用标準函數庫的c++程式中頻繁出現,本書中大部分例子的代碼中也将用到它,需要注意的是,最好不要在頭檔案中使用命名空間,否則容易造成命名沖突。

繼續看程式的第三行:“int main()”,這是主函數(main function)的起始聲明。主函數是所有c++程式的運作的起始點。不管它是在代碼的開頭、結尾還是中間,此函數中的代碼總是在程式開始運作時第一個被執行。main後面跟了一對圓括号(),表示它是一個函數。c++中所有函數都跟有一對圓括号(),括号中可以有一些輸入參數。如例1.1中顯示,主函數(main function)的内容緊跟在它的聲明之後,由花括号{}括起來。

程式的第四行:“cout&lt;&lt;"hello world."&lt;&lt;endl;”是本程式中最重要。cout是c++中的标準輸出流(通常為控制台,即螢幕),這句話把一串字元串(本例中為hello world)插入到輸出流中。cout在的聲明在頭檔案iostream中,是以要想使用cout必須将該頭檔案包括在程式開始處。注意這個句子以分号結尾。分号标示了一個語句的結束,c++的每一個語句都必須以分号結尾。c++程式員最常犯的錯誤之一就是忘記在語句末尾寫上分号。

最後一行(return 0;)中傳回語句(return)标志主函數main()執行結束,并将該語句後面所跟代碼(在本例中為0)傳回。這是在程式執行沒有出現任何錯誤的情況下最常見的程式結束方式。在後面的例子中會看到所有c++程式都以類似的語句結束。

繼續閱讀