1. 程式人生 > >c++ 學習一

c++ 學習一

-、C++語言的歷史

C++ 語言是從C語言發展而來的。

C語言有很多優點,也有很多不足。如對型別匹配的檢查不夠嚴格、基本沒有支援程式碼重用的機制、不支援面向物件等。這使得在用C語言開發大規模的軟體時,維護和擴充都比較困難。

1980 年,貝爾實驗室的 Bjarne Stroustmp 開始對C語言進行改進,為其加入面向物件的特性。最初,這種新語言被稱為“帶類的C(C with Classes)”。

1983 年,“帶類的C”加入虛擬函式、函式和運算子過載、引用等概念後,正式定名為“C++(C plus plus)”。

1985 年,C++ 最權威的著作、由 Bjarne Stroustmp 撰寫的《C++程式設計語言》(The C+ + Programming Language)第一版釋出。

1989 年,C++ 2.0 版釋出,加入了多重繼承、抽象類、靜態成員、常量成員函式等概念。1990 年,又加入了模板、異常處理、名字空間等機制。

1994 年,ANSI C++ 標準釋出。

1998 年,ANSI(美國國家標準協會)和 ISO(國際標準化組織)聯合釋出了至今使用最為廣泛的 C++ 標準,稱為 C++ 98。C++ 98 最為重大的改進就是加入了 “標準模板庫”(S

tandard Template Library, STL),使得“泛型程式設計”成為 C++ 除“面向物件”外的另一主要特點。

2003 年,ISO 的 C++ 標準委員會又對 C++ 略做了一些修訂,釋出了 C++ 03 標準。C++ 03 和 C++ 98 的區別對大多數程式設計師來說可以不必關心。

2005 年,一份名為 Library Technical Report 1(簡稱 TR1)的技術報告發布,為 C++ 加入了正則表示式、雜湊表等重要類模板。雖然 TR1 當時沒有正式成為 C++ 標準,但如今的許多 C++ 編譯器都已經支援 TR1 中的特性。

2011 年 9 月,ISO 通過了新的 C+ + 標準,這就是 C++11。C++11 在醞釀的過程中被稱為 C++ 0x,因為 Bjame Stroustmp 原本預計它應該在 2008 年或 2009 年釋出。 C++11 對 C++ 的語言特性和標準庫都做了比較大的擴充,TR1 中的許多特性正式成為 C++11 標準的一部分。

當前比較流行的 C++ 編譯器有 
GCC
、微軟公司的 Visual Studio 2015、Dev C++ 等。Dev C++ 核心的編譯器實際上還是 GCC,只不過是用 IDE(整合開發環境)將其包裝起來,更加便於使用。Visual Studio 功能最為強大,但是體積巨大而且價格昂貴;Dev C++ 只有幾十兆位元組大小,而且免費。推薦讀者使用這兩種編譯器。

本書中的程式,除非特別說明,都能在上述兩種編譯器中編譯通過,而且執行結果相同。

有兩個網站用來檢視 C++ 的各種函式、模板、類的用法特別方便,它們是:
http://www.cplusplus.com
http://www.cppreference.com

C++中的標頭檔案

在 C++ 中,標頭檔案不再以.h結尾,例如下一節提到的標頭檔案 iostream。一些C語言中常用的標頭檔案在 C++ 中的名字變為去掉.h,並在開頭增加字元c。例如:
#include <cstdio>
#include <cstring>
#include <cstdlib>

強制型別轉換運算子的新形式

在 C++ 中,強制型別轉換可以寫成以下形式:

型別名(待轉換的表示式)

例如,int(3.5)、double(2)、double(a) 等看起來像函式呼叫,比C語言中 (int)3.5、(double)a 的寫法更清晰。

二、C++輸入輸出

在 C++ 中,可以使用 cin 和 cout 進行輸入和輸出。

cout的用法如下:

cout<<待輸出項1<<待輸出項2<<...;

“待輸出項”可以是各種基本型別的變數、常量和表示式。

以下程式演示了 cout 的用法:

 
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. int n = 5;
  5. double f = 3.9;
  6. char c = 'a';
  7. cout << "n=" << n << ",f=" << f << endl; //endl表示換行
  8. cout << 123 << ", c=" << c << endl;
  9. return 0;
  10. }

程式的輸出結果是:
n=5,f=3.9
123, c=a

程式第 1 行引用了標頭檔案 iostream,第 2 行表示使用名字空間 std,C ++ 程式通常都會包含這兩行。如果沒有語句using namespace std;,則 cout 就會沒有定義,除非寫明std::cout,指明其來自名字空間 std。

第7行輸出了字串、整型變數、浮點型變數。endl表示換行。

cin的用法如下:

cin>>變數1>>變數2>>...;

以下程式演示了 cin 的用法:

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. int nl, n2;
  5. char s[20];
  6. double f;
  7. char c;
  8. cin >> s >> nl >> n2 >> c >> f ;
  9. cout << s <<"," << nl << "," << n2 << "," << c << "," << f <<endl;
  10. return 0;
  11. }

程式的執行結果:
Tom 5 10k 1.23↙
Tom,5,10,k,1.23

在本教程的執行結果中,↙表示按 Enter 鍵(回車鍵)。