國立屏東大學 資訊工程學系 物件導向程式設計

1. C++語言發展歷程

C++語言 是由Bjarne Stroustrup博士 於1983年任職於貝爾實驗室(Bell Laboratories) 時所開發的通用程式語言 ,最初被稱為「C with Classes (具備類別的C語言)」,是以C語言做為基礎再加上對於類別的支援所設計。後來陸續加入了許多先進的程式語言特性,並改名為C++語言,以表明其做為C語言後繼者的企圖 。本章將以一個可以輸出「Hello, C++!」的程式為讀者示範C++語言的程式開發流程,並針對主流的Microsoft Windows、Linux與Mac OS等作業系統,分別就其相關的C++語言編譯器與開發工具加以介紹,包含了在Microsoft Windows系統中常被使用的Dev-C++開發工具、在Linux系統中的GNU Compiler Collection以及在Mac OS系統的Clang,本章將分別說明如何在不同作業系統中,使用這些工具來進行C++語言程式的編譯。讀者可以依據慣用的作業系統,參考本章的內容為後續的學習準備好所需的開發環境。


1.1 發展歷程

做為C語言的後繼者,C++語言擁有和C語言相同的基礎,自1983年誕生以來就受到許多原本C語言程式設計師的喜愛;再加上C++語言的物件導向特性,使它迅速成為產業界最受歡迎的程式語言之一。與C語言發展的脈絡相似,C++語言一直致力於標準化的發展。

1998年11月,國際標準化組織(International Organization for Standardization,ISO)與國際電工委員會(International Electrotechnical Commission,IEC)共同頒佈了C++語言的第一個國際標準起,後續包含了多重繼承(Multiple Inheritance)、運算字重載(Operator Overloading)、虛擬函式(Virtual Function)、例外處理(Exception)、執行時期型態資訊(Runtime Type Information,RTTI)與命名空間(Namespace)等創新概念與特性,亦陸續逐漸納入標準之中。這些標準都被規範於ISO/IEC 14882文件並以發佈年份做為區別,其中包含了ISO/IEC 14882:1998、ISO/IEC 14882:2003、ISO/IEC 14882:2011、ISO/IEC 14882:2014與ISO/IEC 14882:2017等多項標準,依發表年份區別,這些標準又被稱為是C++98、C++03、C++11、C++14與C++17。 這些國際標準規範了C++語言的語法與語意規則,所有相關產業人員在開發C++語言的編譯器時,都應該依照這些標準來進行。當然,這些標準都是考慮到C++語言在當時以及未來的需求與發展所制定,現有的C++編譯器不一定能完整支援這些標準。目前大部份的C++語言編譯器應該都已經完整支援C++98與C++03的規範,因此本書並不會特別註明相關內容是符合C++98或C++03的版本;不過由於包含C++11、C++14以及最新的C++17在內的新規範,絕大多數的編譯器都只有部份的實作,所以為了清楚說明起見,本書在使用到C++11、C++14與C++17等新版本的C++標準時,會為讀者註明其所使用的相關版本。不過,做為一本C++語言的入門書籍,本書絕大多數內容都僅針對C++98與C++03,僅有少數內容會使用到C++11、C++14與C++17。