當前位置:編程學習大全網 - 編程語言 - 什麽叫做C++

什麽叫做C++

c++ C++,這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,它是壹種使用非常廣泛的計算機編程語言。C++是壹種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程序程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。 貝爾實驗室的本賈尼·斯特勞斯特盧普(w:en:Bjarne Stroustrup)博士在20世紀80年代發明並實現了C++(最初這種語言被稱作“C with Classes”)。壹開始C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、名字空間(name space)逐漸被加入標準。1998年國際標準組織(ISO)頒布了C++程序設計語言的國際標準ISO/IEC 14882-1998。遺憾的是,由於C++語言過於復雜,以及他經歷了長年的演變,直到現在(2004年)只有少數幾個編譯器完全符合這個標準(這麽說也是不完全正確的,事實上,至今為止沒有任何壹款編譯器完全支持ISO C++)。 另外,就目前學習C++而言,可以認為他是壹門獨立的語言;他並不依賴C語言,我們可以完全不學C語言,而直接學習C++。根據《C++編程思想》(Thinking in C++)壹書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數場合C++ 完全可以取代C語言(然而我們在單片機等需要謹慎利用空間、直接操作硬件的地方還是要使用C語言)。 根據Effective C++第三版第壹條款的描述,現在C++由以下四個“子語言”組成: 1、C子語言。C++支持C語言的幾乎全部功能,在語法上與C語言僅有極微妙的差別(如括號表達式的左右值性,具體請參考C++標準文獻)。 2、面向對象的C++。C++首先作為壹門面向對象的語言而聞名,這個特點在這裏不再詳述。 3、泛型編程語言。C++強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。 4、STL(C++標準模板庫)。隨著STL的不斷發展,它已經逐漸成為C++程序設計中不可或缺的部分,其效率可能比壹般的naive代碼低些,但是其安全性與規範性使它大受歡迎。 C++語言發展大概可以分為三個階段:第壹階段從80年代到1995年。這壹階段C++語言基本上是傳統類型上的面向對象語言,並且憑借著接近C語言的效率,在工業界使用的開發語言中占據了相當大份額;第二階段從1995年到2000年,這壹階段由於標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重性。當然,同時由於Java、C#等語言的出現和硬件價格的大規模下降,C++受到了壹定的沖擊;第三階段從2000年至今,由於以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又壹個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的壹員。 C++的Hello World程序 在使用兼容C89標準(也稱為ANSI C)的編譯器時,下面這個程序顯示“Hello, world!”然後結束運行: (事實上這並不是符合98標準[ISO C++]的C++程序,而且在多數編譯器上這個程序也不能運行,若要在比較舊的編譯器上編譯該程序,應將iostream改為iostream.h) #include <iostream> int main() { std::cout << "Hello, world!\n"; } 在使用兼容C99標準(ISO/IEC 14882-1998)的編譯器時,下面的程序也是可以的: #include <iostream> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; } 根據ISO C++的規定,main函數的形式只能是 int main() { ... } 以及 int main(int argc,char * argv[]) { ... } 盡管如此,但在大部份(其實是在Windows平臺下的大部分)編譯器上, void main() { ... } 也被支持。 C++程序員的數量 分析機構EvansData定期對開發人員展開調查,其調查結果與Stroustrup提出的C++正在擴張的說法相違背。EvansData的數據顯示,以C++為工具的開發人員在整個開發界所占的比例由1998年春天的76%下降至2004年秋的46%。 Forrester最新的調查顯示,C++、微軟VisualBasic和Java是眾多公司產品體系的首選語言。對100家公司的調查顯示,C/C++、VisualBasic和Java在產品體系中的使用比例分別是59%、61%和66%。 傳統上認為,C++相對於目前壹些新潮的語言,如Java、C#,優勢在於程序的運行性能。這種觀念並不完全。如果壹個人深信這壹點,那麽說明他並沒有充分了解和理解C++和那個某某語言。同時,持有這種觀念的人,通常也是受到了某種誤導(罪魁禍首當然就是那些財大氣粗的公司)。對於這些公司而言,他們隱藏了C++同某某語言間的核心差別,而把現在多數程序員不太關心的差別,也就是性能,加以強化。因為隨著cpu性能的快速提升,性能問題已不為人們所關心。這叫"李代桃僵"。很多涉世不深的程序員,也就相信了他們。於是,大公司們的陰謀也就得逞了。 壹般認為,使用Java或C#的開發成本比C++低。但是,如果妳能夠充分分析C++和這些語言的差別,會發現這句話的成立是有條件的。這個條件就是:軟件規模和復雜度都比較小。如果不超過3萬行有效代碼(不包括生成器產生的代碼),這句話基本上還能成立。否則,隨著代碼量和復雜度的增加,C++的優勢將會越來越明顯。 造成這種差別的就是C++的軟件工程性。在Java和C#大談軟件工程的時候,C++實際上已經悄悄地將軟件工程性提升到壹個前所未有的高度。這壹點被多數人忽視,並且被大公司竭力掩蓋。 語言在軟件工程上的好壞,依賴於語言的抽象能力。從面向過程到面向對象,語言的抽象能力有了壹個質的飛躍。但在實踐中,人們發現面向對象無法解決所有軟件工程中的問題。於是,精英們逐步引入、並拓展泛型編程,解決更高層次的軟件工程問題。(實際上,面向對象和泛型編程的起源都可以追溯到1967年

  • 上一篇:數控的原理是什麽?
  • 下一篇:龍門口野炊作文
  • copyright 2024編程學習大全網