- 21天學通C++
- 陳龍等編著
- 2229字
- 2018-12-29 13:31:53
1.1 C++概述
C++語言是一種應用較廣的面向對象的程序設計語言,其除了繼承了C語言全部的優點和功能外,還支持面向對象程序設計。C++現在已成為介紹面向對象程序設計的首選語言,是當前一種十分流行和實用的程序設計語言。
1.1.1 C++的歷史
讀者可能了解到,C++語言起源于C語言。1980年,美國貝爾實驗室的Bjarne Stroustrup博士及其同事在C語言的基礎上,從Simula67中引入面向對象的特征,開發出一種過程性與對象性相結合的程序設計語言,最初稱為“帶類的C”,至1983年取名為C++。
后來,Stroustrup和他的同事們又為C++引進了運算符重載、引用、虛函數等許多特性,使之更加精練,于1989年后推出了AT&T C++ 2.0版。隨后美國國家標準化協會ANSI(American National Standard Institute)和國際標準化組織ISO(International Standards Organization)一起進行了標準化工作,并于1998年正式發布了C++語言的國際標準ISO/IEC:98—14882。各軟件商推出的C++編譯器都支持該標準,并有不同程度的拓展。
此后,C++經過了許多次改進、完善,發展成為現在的C++。目前的C++具有兩方面的特點:其一,C++是C語言的超集,能與C語言兼容;其二,C++支持面向對象的程序設計,使其被稱為一種真正意義上的面向對象程序設計語言。
C++支持面向對象的程序設計方法,特別適合于中型和大型的軟件開發項目。從開發時間、費用到軟件的重用性、可擴充性、可維護性和可靠性等方面,C++均具有很大的優越性。
提示:C++可以認為是C語言的一個超集,這就使得許多C代碼不經修改就可被C++的編譯器編譯通過。
1.1.2 C++的特點
由于C++是一種面向對象的程序設計語言,因此具有面向對象程序設計有別于過程化設計的特點。面向對象程序設計是一種程序設計方法,其模仿了人們建立現實世界模型的方法。在面向對象程序設計中,現實世界中客觀存在的事物都被稱為對象,而具有相同特征的一類對象則可歸納為類。例如,張三是一個對象,而人則是一個類。面向對象程序設計的基礎是對象和類。
C++中,對象是構成信息系統的基本單位,類(class)是對一組性質相同對象的描述。簡單地說,類是用戶定義的一種新的數據類型,是C++程序設計的核心。由于C++是一種面向對象語言,因此,面向對象程序設計的主要特征也是C++的主要特點,具體如下。
● 封裝性:所謂封裝就是將一組數據和與這組數據有關的操作集合組裝在一起,形成一個能動的實體,也就是對象。C++中通過建立類這個數據類型來支持封裝性。
● 繼承性:繼承是指一個類具有另一個類的屬性和行為。這個類既具有另一個類的全部特征,又具有自身的獨有特征。C++中將其稱為派生類(或子類),而將其所繼承的類稱為基類(父類)。
● 多態性:多態是指不同的對象調用相同名稱的函數,并可導致完全不同的行為。C++中的多態性通過使用函數重載、模板和虛函數等概念來實現。
近幾年來,C++得到過許多擴展,使其具有更多獨有的特點。C++模板是近幾年來對此語言的一種擴展,模板是根據類型的參數來產生函數和類的機制,有時也稱模板為“參數化的類型”。使用模板,可以設計一個對許多類型數據進行操作的類,而不需要為每個類型的數據建立一個單獨的類。標準模板庫(Standard Template Library,STL)和微軟的活動模板庫(Active Template Library,ATL)都基于C++語言擴展,這些在后續的章節中都將逐一介紹。
此外,C++標準可分為兩部分:C++語言本身和C++標準庫。C++標準庫對于Visual C++是相當新的,C++標準庫實現容器和算法的部分就是標準模板庫STL。
標準模板庫STL是數據結構和算法的一個框架,數據結構包括矢量、列表和映射等,算法包括這些數據結構的查找、復制和排序等。1994年7月,ANSI/ISO C++標準委員會投票決定接受STL為C++標準庫的一部分,STL的產生是為了滿足通用性的設計目標,而不是為了提高性能。
1.1.3 C與C++的區別
前面提到過,C++語言是對C語言的擴展,是C語言的超集。C++語言增強了C語言的能力,使得程序員能夠提高編寫程序的質量,并易于程序代碼的復用。C++語言的ISO標準已在1997年11月被一致通過,于1998年8月被正式批準。
事實上,“C++”這個名字是由Rick Maseitti提出,到1983年夏被確定的。C++的創作靈感來源于當時計算機語言多方面的成果,特別是BCPL語言(Basic Combined Programming Language,它也是C語言的來源之一)和Simula 67語言(以面向對象為核心的語言),同時還借鑒了Algol 68。就如同它的名字表達的那樣,C++語言是C語言的一個超集,它是一門混合型的語言,既支持傳統的結構化程序設計,又支持面向對象的程序設計,這是C++語言成功流行的一個重要原因。
注意:C語言是結構化和模塊化的語言,它是面向過程的。C++保留了C語言原有的所有優點,增加了面向對象的機制。
簡單來說,C++與C完全兼容。C++既可用于結構化程序設計,又可用于面向對象的程序設計。C++對C的增強和擴展,主要表現在兩個方面:
● 在原來面向過程的機制基礎上,對C語言的功能做了不少擴充。
● 增加了面向對象的機制。
具體來說,C++與C相比,其優點在于:
● 與C語言兼容,既支持面向對象的程序設計,也支持結構化的程序設計。同時,熟悉C語言的程序員,能夠迅速掌握C++語言。
● 修補了C語言中的一些漏洞,提供更好的類型檢查和編譯時的分析。使得程序員在C++環境下繼續寫C代碼,也能得到直接的好處。
● 生成目標程序質量高,程序執行效率高。一般來說,用面向對象的C++編寫的程序執行速度與C語言程序不相上下。
● 提供了異常處理機制,簡化了程序的出錯處理。利用throw、try和catch關鍵字,使出錯處理程序不必與正常的代碼緊密結合,提高了程序的可靠性和可讀性。
● 函數可以重載。重載允許相同的函數名具有不同參數表,系統根據參數的個數和類型匹配相應的函數。
● 提供了模板機制。模板包括類模板和函數模板兩種,它們將數據類型作為參數。對于具體數據類型,編譯器自動生成模板類或模板函數,它提供了源代碼復用的一種手段。
- ArchiCAD 19:The Definitive Guide
- 集成架構中型系統
- 機器學習及應用(在線實驗+在線自測)
- 空間機器人遙操作系統及控制
- 西門子PLC與InTouch綜合應用
- Mastering Salesforce CRM Administration
- 信息物理系統(CPS)測試與評價技術
- 電氣控制與PLC技術應用
- 工業機器人維護與保養
- Salesforce for Beginners
- 深度學習與目標檢測
- 電氣控制與PLC原理及應用(歐姆龍機型)
- Learning Cassandra for Administrators
- Microsoft System Center Data Protection Manager Cookbook
- Python語言從入門到精通