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
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++ 編譯器有
本書中的程式,除非特別說明,都能在上述兩種編譯器中編譯通過,而且執行結果相同。
有兩個網站用來檢視 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 的用法:
- #include <iostream>
- using namespace std;
- int main(){
- int n = 5;
- double f = 3.9;
- char c = 'a';
- cout << "n=" << n << ",f=" << f << endl; //endl表示換行
- cout << 123 << ", c=" << c << endl;
- return 0;
- }
程式的輸出結果是:
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 的用法:
- #include <iostream>
- using namespace std;
- int main(){
- int nl, n2;
- char s[20];
- double f;
- char c;
- cin >> s >> nl >> n2 >> c >> f ;
- cout << s <<"," << nl << "," << n2 << "," << c << "," << f <<endl;
- return 0;
- }
程式的執行結果:
Tom 5 10k 1.23↙
Tom,5,10,k,1.23
在本教程的執行結果中,↙表示按 Enter 鍵(回車鍵)。