求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

「C++」修訂間的差異檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
(Young Main 已移動頁面 WP++ 覆蓋重新導向頁面至 C++,未留重新導向頁面:回退)
 
(未顯示由 3 位使用者於中間所作的 7 次修訂)
行 1: 行 1:
'''C++'''是一种被广泛使用的[[计算机]]程序设计[[语言]] 。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、[[数据]] 抽象、面向对象程序设计、泛型程序设计和设计模式等。
+
[[File: C++.png|300px|缩略图|右|<big> C++</big>[https://img-blog.csdnimg.cn/20200324122653635.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RCX01hc3Rlcg==,size_16,color_FFFFFF,t_70 原图链接][https://blog.csdn.net/TB_Master/article/details/105059269 来自 CSDN博客 的图片]]]
  
 比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间在20世纪80年代发明并实现了C++。起初,这种语言被称作“C with Classes”(“包含‘类’的C语言”),作为C语言的增强版出现。随后,C++不断增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(runtime type information)、名字空间(namespace)等概念逐渐纳入标准。1998年,[[国际标准组织]](ISO)颁布了C++程序设计语言的第一个国际标准ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根据《C++编程思想》(Thinking in C++)一书,C++与C的代码执行效率往往相差在±5%之间。
+
'''C++'''是一种被广泛使用的[[计算机]]程序设计[[语言]]。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、[[数据]]抽象、面向对象程序设计、泛型程序设计和设计模式等<ref>[https://zhuanlan.zhihu.com/p/58612758 最难学的十大编程语言,C++排第二,它竟是第一名!],知乎, 2019-3-7</ref>。
 +
 
 +
[[ 比雅尼·斯特劳斯特鲁普]][[ 博士]] 在贝尔实验室工作期间在20世纪80年代发明并实现了C++。起初,这种语言被称作“C with Classes”(“包含‘类’的C语言”),作为C语言的增强版出现。随后,C++不断增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(runtime type information)、名字空间(namespace)等概念逐渐纳入标准。1998年,[[国际标准组织]](ISO)颁布了C++程序设计语言的第一个国际标准ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根据《C++编程思想》(Thinking in C++)一书,C++与C的代码执行效率往往相差在±5%之间。
  
 
==发展历史==
 
==发展历史==
行 21: 行 23:
 
 多年后,一个联合的ANSI-ISO委员会于1998年对C++标准化([[ISO]]/IEC 14882:1998)。在官方发布1998标准的若干年后,委员会处理缺陷报告,并于2003年发布一个C++标准的修正版本。2005年,一份名为Library Technical Report 1(简称TR1)的技术报告发布。虽然还不是官方标准的一部分,不过它所提供的几个扩展可望成为下一版C++标准的一部分。几乎所有目前仍在维护的C++编译器皆已支持TR1。
 
 多年后,一个联合的ANSI-ISO委员会于1998年对C++标准化([[ISO]]/IEC 14882:1998)。在官方发布1998标准的若干年后,委员会处理缺陷报告,并于2003年发布一个C++标准的修正版本。2005年,一份名为Library Technical Report 1(简称TR1)的技术报告发布。虽然还不是官方标准的一部分,不过它所提供的几个扩展可望成为下一版C++标准的一部分。几乎所有目前仍在维护的C++编译器皆已支持TR1。
  
 目前最新的C++标准是2017年12月发布的ISO/IEC 14882:2017,又称C++17或C++1z。
+
 目前最新的C++标准是2017年12月发布的ISO/IEC 14882:2017,又称C++17或C++1z<ref>[https://bbs.csdn.net/topics/392906057?list=lz c++历史],CSDN论坛,2019-7-22</ref>
  
 
 虽然C++免专利,但标准文件本身并不是免费的,尽管标准文档不是免费的,但是很容易从[[网络]]中获取,最简单的就是C++标准文档之前的最后一次草稿版本,它与标准的差别几乎只在于排版上。
 
 虽然C++免专利,但标准文件本身并不是免费的,尽管标准文档不是免费的,但是很容易从[[网络]]中获取,最简单的就是C++标准文档之前的最后一次草稿版本,它与标准的差别几乎只在于排版上。
行 32: 行 34:
  
 
 有一个关于C++名字的笑话是,当你使用后缀++时,附加只发生在[[运算]]之后(因此,它应该是++C,而不是C++,这个笑话是说时下某些程序员还在以使用C的方式使用C++,这通常被一些权威著作认为是不正确的)。
 
 有一个关于C++名字的笑话是,当你使用后缀++时,附加只发生在[[运算]]之后(因此,它应该是++C,而不是C++,这个笑话是说时下某些程序员还在以使用C的方式使用C++,这通常被一些权威著作认为是不正确的)。
 +
 +
==视频==
 +
===<center> C++  相关视频</center>===
 +
<center>C加加基础教程第1节:C加加知识点全概括</center>
 +
<center>{{#iDisplay:z14108lcvzk|560|390|qq}}</center>
 +
<center>C加加基础教程第2节:一段简单的输出程序</center>
 +
<center>{{#iDisplay:g1410mp9ls8|560|390|qq}}</center>
  
 
==参考文献==
 
==参考文献==
 +
 +
[[Category:312 電腦科學]]

於 2022年8月23日 (二) 12:25 的最新修訂

C++是一種被廣泛使用的計算機程序設計語言。它是一種通用程序設計語言,支持多重編程模式,例如過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計和設計模式等[1]

比雅尼·斯特勞斯特魯普博士在貝爾實驗室工作期間在20世紀80年代發明並實現了C++。起初,這種語言被稱作「C with Classes」(「包含『類』的C語言」),作為C語言的增強版出現。隨後,C++不斷增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多繼承(multiple inheritance)、標準模板庫(standard template library, STL)、異常處理(exception)、運行時類型信息(runtime type information)、名字空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新標準為ISO/IEC 14882:2017。根據《C++編程思想》(Thinking in C++)一書,C++與C的代碼執行效率往往相差在±5%之間。

發展歷史

C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向對象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中占據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬件價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。

比雅尼·斯特勞斯特魯普(Stroustrup)工作起於1979年的C with Classes。這個構思起源於斯特勞斯特魯普做博士論文時的一些程序撰寫經驗。他發現Simula具備很利於大型軟件開發的特點,但Simula的運行速度太慢,無法對現實需求發揮功效;BCPL雖快得多,但它過於低端的特性,使其不適於大型軟件的開發。當斯特勞斯特魯普開始在貝爾實驗室工作時,他有分析UNIX核心關於分布式計算的問題。回想起他的博士論文經驗,斯特勞斯特魯普開始為C語言增強一些類似Simula的特點。之所以選擇C,是因為它適於各種用途、快速和可移植性。除了C和Simula之外,同時也從其它語言中獲取靈感,如ALGOL 68、Ada、CLU以及ML。

剛開始時,類別、派生類、存儲類型檢查、內聯和缺省參數特性,都是透過Cfront引入C語言之中。

1983年,C with Classes改命名為C++(++是C語言中的增值操作符)。加入了新的特性,其中包括虛函數函數名和運算符重載、參考常量、用戶可控制的自由空間存儲區控制、改良的類型檢查,以及新的雙斜線(//)單行註解風格。

1985年,發布第一版《C++程序設計語言》,提供一個重點的語言參考,至此還不是官方標準。1985年10月出現了第一個商業化發布。

1989年,發布了Release 2.0。引入了多重繼承、抽象類別、靜態成員函數、常量成員函數,以及成員保護。1990年,出版了The Annotated C++ Reference Manual。這本書後來成為標準化的基礎。稍後還引入了模板、異常處理、名字空間、新的強制類型轉換,以及布爾類型。

隨着C++語言的演變,也逐漸演化出相應的標準程序庫。最先加進C++標準庫的是流I/O程序庫,其用以取代傳統的C函數,如printf和scanf。隨後所引入的程序庫中最重要的便是標準模板庫,簡稱STL。

多年後,一個聯合的ANSI-ISO委員會於1998年對C++標準化(ISO/IEC 14882:1998)。在官方發布1998標準的若干年後,委員會處理缺陷報告,並於2003年發布一個C++標準的修正版本。2005年,一份名為Library Technical Report 1(簡稱TR1)的技術報告發布。雖然還不是官方標準的一部分,不過它所提供的幾個擴展可望成為下一版C++標準的一部分。幾乎所有目前仍在維護的C++編譯器皆已支持TR1。

目前最新的C++標準是2017年12月發布的ISO/IEC 14882:2017,又稱C++17或C++1z[2]

雖然C++免專利,但標準文件本身並不是免費的,儘管標準文檔不是免費的,但是很容易從網絡中獲取,最簡單的就是C++標準文檔之前的最後一次草稿版本,它與標準的差別幾乎只在於排版上。

C++名字的由來

C++這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為「new C」,之後是「C with Classes」。在計算機科學中,C++仍被稱為C語言的上層結構。它最後得名於C語言中的「++」運算符(其對變量的值進行遞增)。而且在共同的命名約定中,使用「+」以表示增強的程序。斯特勞斯特魯普說:「這個名字象徵着源自於C語言變化的自然演進」。C+是一個和C/C++無關的早期編程語言。

Rick Mascitti在1992年被非正式地問起名字的由來,他表示這是在半開玩笑中說出的。他從沒想過C++會成為這門語言的正式名字。

有一個關於C++名字的笑話是,當你使用後綴++時,附加只發生在運算之後(因此,它應該是++C,而不是C++,這個笑話是說時下某些程序員還在以使用C的方式使用C++,這通常被一些權威著作認為是不正確的)。

視頻

C++ 相關視頻

C加加基礎教程第1節:C加加知識點全概括
C加加基礎教程第2節:一段簡單的輸出程序

參考文獻