C++
| C++ | |
|---|---|
Logo endorsed by the C++ standards committee | |
| Paradigms | Multi-paradigm: procedural, imperative, functional, object-oriented, generic, modular |
| Family | C |
| Designed by | Bjarne Stroustrup |
| Developer | ISO/IEC JTC 1 (Joint Technical Committee 1) / SC 22 (Subcommittee 22) / WG 21 (Working Group 21) |
| First appeared | 1985 |
| Stable release | C++23 (ISO/IEC 14882:2024)
/ 19 October 2024 |
| Preview release | C++26
/ 5 August 2025 |
| Typing discipline | Static, strong, nominative, partially inferred |
| OS | Cross-platform |
| Filename extensions | .C, .cc, .cpp, .cxx, .c++, .h, .H, .hh, .hpp, .hxx, .h++ .cppm, .ixx[1] |
| Website | isocpp |
| Major implementations | |
| GCC, LLVM Clang, Microsoft Visual C++, Embarcadero C++Builder, Intel C++ Compiler, IBM XL C++, EDG | |
| Influenced by | |
| Ada, ALGOL 68,[2] BCPL,[3] C, CLU,[2] F#,[4][a] ML, Mesa,[2] Modula-2,[2] Simula, Smalltalk[2] | |
| Influenced | |
| Ada 95, C#,[5] C99, Carbon, Chapel,[6] Clojure,[7] D, Java,[8] JS++,[9] Lua,[10] Nim,[11] Objective-C++, Perl, PHP, Python,[12] Rust,[13] Seed7 | |
| |
C++[b] is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup. First released in 1985 as an extension of the C programming language, adding object-oriented (OOP) features, it has since expanded significantly over time adding more OOP and other features; as of 1997/C++98 standardization, C++ has added functional features, in addition to facilities for low-level memory manipulation for systems like microcomputers or to make operating systems like Linux or Windows, and even later came features like generic programming (through the use of templates). C++ is usually implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle, and IBM.[14]
C++ was designed with systems programming and embedded, resource-constrained software and large systems in mind, with performance, efficiency, and flexibility of use as its design highlights.[15] C++ has also been found useful in many other contexts, with key strengths being software infrastructure and resource-constrained applications,[15] including desktop applications, video games, servers (e.g., e-commerce, web search, or databases), and performance-critical applications (e.g., telephone switches or space probes).[16]
C++ is standardized by the International Organization for Standardization (ISO), with the latest standard version ratified and published by ISO in October 2024 as ISO/IEC 14882:2024 (informally known as C++23).[17] The C++ programming language was initially standardized in 1998 as ISO/IEC 14882:1998, which was then amended by the C++03, C++11, C++14, C++17, and C++20 standards. The current C++23 standard supersedes these with new features and an enlarged standard library. Before the initial standardization in 1998, C++ was developed by Stroustrup at Bell Labs since 1979 as an extension of the C language; he wanted an efficient and flexible language similar to C that also provided high-level features for program organization.[18] Since 2012, C++ has been on a three-year release schedule[19] with C++26 as the next planned standard.[20]
- ^ "Overview of modules in C++". Microsoft. 24 April 2023.
- ^ a b c d e Stroustrup, Bjarne (1996). "A history of C++: 1979-1991". History of programming languages---II. ACM. pp. 699–769. doi:10.1145/234286.1057836.
- ^ Stroustrup, Bjarne (16 December 2021). "C++20: Reaching for the Aims of C++ - Bjarne Stroustrup - CppCon 2021". CppCon. Archived from the original on 30 December 2021. Retrieved 30 December 2021.
- ^ Stroustrup, Bjarne (12 June 2020). "Thriving in a crowded and changing world: C++ 2006–2020". Proceedings of the ACM on Programming Languages. 4 (HOPL). Association for Computing Machinery (ACM): 1–168. doi:10.1145/3386320. ISSN 2475-1421. S2CID 219603741.
- ^ Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5).
Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
- ^ "Chapel spec (Acknowledgements)" (PDF). Cray Inc. 1 October 2015. Archived (PDF) from the original on 24 June 2018. Retrieved 14 January 2016.
- ^ Fogus, Michael. "Rich Hickey Q&A". Code Quarterly. Archived from the original on 11 January 2017. Retrieved 11 January 2017.
- ^ Harry. H. Chaudhary (28 July 2014). "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans". Archived from the original on 27 May 2021. Retrieved 29 May 2016.
- ^ Roger Poon (1 May 2017). "Scaling JS++: Abstraction, Performance, and Readability". Archived from the original on 11 May 2020. Retrieved 21 April 2020.
- ^ "The evolution of an extension language: a history of Lua". www.lua.org. Retrieved 4 January 2023.
- ^ "FAQ Nim Programming Language". Archived from the original on 11 July 2017. Retrieved 21 April 2020.
- ^ "9. Classes — Python 3.6.4 documentation". docs.python.org. Archived from the original on 23 October 2012. Retrieved 9 January 2018.
- ^ "Influences - The Rust Reference". doc.rust-lang.org. Retrieved 4 January 2023.
- ^ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.). Addison-Wesley. ISBN 0-201-88954-4. OCLC 59193992.
- ^ a b Stroustrup, B. (6 May 2014). "Lecture:The essence of C++. University of Edinburgh". YouTube. Archived from the original on 28 April 2015. Retrieved 12 June 2015.
- ^ Stroustrup, Bjarne (17 February 2014). "C++ Applications". stroustrup.com. Archived from the original on 4 April 2021. Retrieved 5 May 2014.
- ^ Cite error: The named reference
isocpp2024was invoked but never defined (see the help page). - ^ "Bjarne Stroustrup's Homepage". www.stroustrup.com. Archived from the original on 14 May 2019. Retrieved 15 May 2013.
- ^ "C++ IS schedule" (PDF). Archived (PDF) from the original on 10 August 2020. Retrieved 9 August 2020.
- ^ "C++; Where it's heading". Archived from the original on 3 December 2018. Retrieved 3 December 2018.
Cite error: There are <ref group=lower-alpha> tags or {{efn}} templates on this page, but the references will not show without a {{reflist|group=lower-alpha}} template or {{notelist}} template (see the help page).