C++: Difference between revisions
(39 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Image:C++.png|right|250px]] | [[Image:C++.png|right|250px]] | ||
A language in the [[CPL]] branch of the [[Algol]] family of programming languages, C++ is basically AT&T [[C]] with the object-oriented features of [[Simula]]. While you can compile and run C programs in | A language in the [[CPL]] branch of the [[Algol]] family of programming languages, C++ is basically AT&T [[C]] with the object-oriented features of [[Simula]]. While you can compile and run C programs in a C++ environment and some C++ compilers are actually just C compilers with a pre-processor, C++ is in fact a very distinct language to C that by design uses mostly the same syntax. | ||
==History== | |||
C++ was first implemented as a rudimentary pre-processor for C in 1979 and was then known simply as '''C with Classes''', the name was changed to C84 in 1983 and when people realised that it would clash with the naming convention for the [[ANSI]] C formal standard process that had already begun it was changed again to C++ in 1985. | C++ was first implemented as a rudimentary pre-processor for C in 1979 and was then known simply as '''C with Classes''', the name was changed to C84 in 1983 and when people realised that it would clash with the naming convention for the [[ANSI]] C formal standard process that had already begun it was changed again to C++ in 1985. | ||
*Oct 1985: Cfront 1.0 | |||
*1998: C++98 (ISO/IEC 14882:1998) | |||
*2003: C++03 (ISO/IEC 14882:2003) | |||
*2011: C++11 (ISO/IEC 14882:2011) | |||
== | ==OS/2 implementations== | ||
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | ||
* [[Borland | * [[Borland C++ for OS/2]] | ||
* Glockenspiel C++ | * [[Glockenspiel C++]] | ||
* GNU | * GNU C++ (g++) - Open Source | ||
* [[IBM C Set++ for OS/2]] | |||
* [[VisualAge C++|IBM VisualAge C++]] | |||
* [[Metaware High C/C++]] | |||
* [[IBM C Set++ for OS/2]] | * Microway [[NDP C/C++]] | ||
* [[VisualAge C++|IBM VisualAge C++]] | * [[Open Watcom C/C++]] - Open Source | ||
* [[Metaware High C/C++]] | * JPI [[TopSpeed C++]] | ||
* Microway [[NDP C/C++]] | * [[Watcom C/C++]] | ||
* [[Open Watcom | * [[Zortech C++]] | ||
* JPI [[TopSpeed C++]] | |||
* | |||
* [[Zortech C++]] | |||
</div> | </div> | ||
;Interpreters | ;Interpreters | ||
* [[Cint]] - Open source | * [[Cint]] - Open source - [https://root.cern.ch/drupal/content/cint Interpreter from CERN], intended for educational use | ||
===OS/2 C++ libraries and class libraries=== | ===OS/2 C++ libraries and class libraries=== | ||
If the compiler | If the compiler supports both C and C++, you can use C libraries with C++ programs and vice versa. However using C++ libraries from C can be a bit kludgey and require you to write bindings. While using C libraries from C++ is less problematic it can also require you to write some interfaces, take a look at the [[C|C page]] for available C libraries. Also see the [[Standard Template Library]] for STL support. | ||
==== GUI class libraries ==== | ==== GUI class libraries ==== | ||
* [[Cubus OS/2 Class Library]] - Encapsulates PM and VIO API's - Open source | * [[Cubus OS/2 Class Library]] - Encapsulates PM and VIO API's - Open source | ||
* Liant [[C++/Views]] - Multi-platform app framework/GUI library | * Liant [[C++/Views]] - Multi-platform app framework/GUI library | ||
* [[ObjectPM]] - [[Presentation Manager]] classes | * [[ObjectPM]] - [[Presentation Manager]] classes | ||
* [[OpenZinc]] (formerly ''Zinc'') - Multi-platform UI library - Originally commercial, now open source | * [[OpenZinc]] (formerly ''Zinc'') - Multi-platform UI library - Originally commercial, now open source | ||
* [[Qt]] - Multi-platform application and UI framework | * [[Qt]] - Multi-platform application and UI framework | ||
* StarDivision StarView | * StarDivision StarView | ||
* [[V C++ GUI Framework]] - Multi-platform - Open source | * [[V C++ GUI Framework]] - Multi-platform - Open source | ||
==== Database and file management ==== | ==== Database and file management ==== | ||
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | ||
* [[C/Database Toolchest]] - Library for database creation and maintenance | * [[C/Database Toolchest]] - Library for database creation and maintenance | ||
* [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | * [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | ||
* [[CSLIB]] - Database classes and generator | * [[CSLIB]] - Database classes and generator | ||
* [[CThrough]] - Graphics class library | * [[CThrough]] - Graphics class library | ||
* [[dbfLIB|dbfLIB++]] - A tool that allows you to work with [[xBase]] databases | * [[dbfLIB|dbfLIB++]] - A tool that allows you to work with [[xBase]] databases | ||
* [[e_Comm]] - Communications and networking | * [[e_Comm]] - Communications and networking | ||
* [[e_Db]] - Database engine | * [[e_Db]] - Database engine | ||
* [[e_Fs]] - Virtual file system | * [[e_Fs]] - Virtual file system | ||
* [[Kroni's Classes]] - Class library with sundry PM functions - PostcardWare | * [[Kroni's Classes]] - Class library with sundry PM functions - PostcardWare | ||
* [[Lily]] - Embeddable [[LISP]] - Open Source | * [[Lily]] - Embeddable [[LISP]] - Open Source | ||
* [[Net.h++]] - Networking and comms | * [[Net.h++]] - Networking and comms | ||
* [[The Open Objects Library (OOL)]] - Originally freeware, now open source | * [[The Open Objects Library (OOL)]] - Originally freeware, now open source | ||
* [[Socket++]] - Networking library - Open Source | * [[Socket++]] - Networking library - Open Source | ||
* [[Threads.h++]] - Multi-threading | * [[Threads.h++]] - Multi-threading | ||
* [[Tools.h++]] - Foundation classes | * [[Tools.h++]] - Foundation classes | ||
* [[WebM libvpx]] - VP8/VP9 streaming video - Open Source | * [[WebM libvpx]] - VP8/VP9 streaming video - Open Source | ||
* [[Xerces C++]] - XML parser - Open Source | * [[Xerces C++]] - XML parser - Open Source | ||
* [[ZGRAF]] - Graphing library | * [[ZGRAF]] - Graphing library | ||
</div> | </div> | ||
==== Data compression ==== | ==== Data compression ==== | ||
* [[LZ4]] - Compression library - | Open source: | ||
* [[Snappy]] - Compression library | * [[LZ4]] - Compression library - | ||
* [[Zipios++]] - Compression class | * [[Snappy]] - Compression library | ||
* [[Zipios++]] - Compression class library | |||
====Signal processing==== | ====Signal processing==== | ||
* [[Aquila]] - DSP library | * [[Aquila]] - DSP library | ||
* [[Simple SPL]] - DSP library - Freeware | * [[Simple SPL]] - DSP library - Freeware | ||
=== GUI and application generators with C++ output === | === GUI and application generators with C++ output === | ||
* [[Hockware VisPro/C++]] - GUI Creator | * [[Hockware VisPro/C++]] - GUI Creator | ||
* [[JBA Guidelines]] - GUI/Database/Application creator | * [[JBA Guidelines]] - GUI/Database/Application creator | ||
* [[Professor Owl]] - Open Source | * [[Professor Owl]] - Open Source - For [[Borland]] OWL only | ||
* | * Vestronix Pro C - Database and spreadsheet application generator | ||
=== Translators that generate C++ output === | === Translators that generate C++ output === | ||
* | *Oracle Pro C - SQL > C++ | ||
* [[Tower Eiffel]] - Can optionally generate C++ instead of native output | *[[Tower Eiffel]] - Can optionally generate C++ instead of native output | ||
=== Workframes and or IDE's === | === Workframes and or IDE's === | ||
* | *CommonPoint | ||
* | *Object WorkBench - Shareware | ||
=== Code verifiers, beautifiers, visualisers and other C++ source code utilities === | === Code verifiers, beautifiers, visualisers and other C++ source code utilities === | ||
* [[CC-Rider C++]] | * [[CC-Rider C++]] - Static analyser, beautifier and visualiser. | ||
* [[DOC++]] - Automatic document generator - Open source | * [[DOC++]] - Automatic document generator - Open source | ||
* [[Ephedra]] - C/C++ to Java - Open source | * [[Ephedra]] - C/C++ to Java - Open source | ||
* [[Exuberant ctags]] - Creates index files out of C++ source files - Open source | * [[Exuberant ctags]] - Creates index files out of C++ source files - Open source | ||
* PC-Lint | * PC-Lint | ||
* [[SourceLink]] | * [[SourceLink]] - Browser/Editor/Visualiser | ||
===C++ source code snippets, archives and collections=== | ===C++ source code snippets, archives and collections=== | ||
Line 107: | Line 101: | ||
* [[PostgreSQL]] - SQL relational database system - Open source | * [[PostgreSQL]] - SQL relational database system - Open source | ||
== | ==DOS implementations== | ||
* [[ | * [[Borland C++]] | ||
* Borland [[Turbo C++]] | |||
* Comeau C++ | |||
* [[ | * Glockenspiel C++ ([[Guidelines C++]], Oasys Designer C++) | ||
* Intek C++ | |||
* [[Metaware High C/C++]] | |||
* [[Microsoft C/C++]] 7.0 | |||
* | * [[Watcom C/C++]] | ||
* Orange C/C++ Compiler - Open Source | |||
* Salford Software C++ | |||
* [[TopSpeed C++]] | |||
* | * [http://www.digitalmars.com/download/freecompiler.html Digital Mars C/C++], [[Symantec C++]], [[Zortech C++]] | ||
* | |||
* [[Metaware High C/C++]] | |||
* [[Microsoft C/C++]] 7.0 | |||
* [[ | |||
* Orange C/C++ Compiler - Open Source | |||
* Salford Software C++ | |||
* [[TopSpeed C++]] | |||
* [http://www.digitalmars.com/download/freecompiler.html Digital Mars C/C++], [[Symantec C++]], [[Zortech C++]] | |||
;Interpreter | ;Interpreter | ||
* [[Cint]] - Open source - Current - [https://root.cern.ch/drupal/content/cint Interpreter from CERN], intended for educational use | * [[Cint]] - Open source - Current - [https://root.cern.ch/drupal/content/cint Interpreter from CERN], intended for educational use | ||
==== | ====Class libraries==== | ||
* [[C/Database Toolchest]] - Library for database creation and maintenance | * [[C/Database Toolchest]] - Library for database creation and maintenance | ||
* [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | * [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | ||
* [[e_Db]] - Databse engine | * [[e_Db]] - Databse engine | ||
* [[ZGRAF]] - Graphing library | * [[ZGRAF]] - Graphing library | ||
==== | |||
* [[Boxer]] - C++ support included by default | ====Editors support==== | ||
* [[BRIEF]] | * [[Boxer]] - C++ support included by default | ||
* [[Elvis]] - C++ syntax support included by default - Open source | * [[BRIEF]] | ||
* [[Elvis]] - C++ syntax support included by default - Open source | |||
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. | * [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. | ||
== | ==Implementations that run under WinOS/2== | ||
* [[Microsoft C/C++]] 7.0 - Commercial - Discontinued | * [[Microsoft C/C++]] 7.0 - Commercial - Discontinued | ||
* [[TopSpeed C++]] - Commercial - Discontinued - Cross compilation from DOS or OS/2 only | * [[TopSpeed C++]] - Commercial - Discontinued - Cross compilation from DOS or OS/2 only | ||
====WinOS/2 compatible libraries and class libraries==== | ====WinOS/2 compatible libraries and class libraries==== | ||
* [[C/Database Toolchest]] - Library for database creation and maintenance | * [[C/Database Toolchest]] - Library for database creation and maintenance - Note that the correct library for Win16b development is called the DOS library (but contains Win 16b libs as well) and not the Windows one. | ||
* [[Net.h++]] - Networking and comms | * [[Net.h++]] - Networking and comms | ||
* [[Tools.h++]] - Foundation classes | * [[Tools.h++]] - Foundation classes | ||
* [[V C++ GUI Framework]] - Multi-platform - Open source | * [[V C++ GUI Framework]] - Multi-platform - Open source | ||
==Publications== | ==Publications== | ||
Line 161: | Line 144: | ||
===OS/2 and C++ related articles, info & tips=== | ===OS/2 and C++ related articles, info & tips=== | ||
* [[Dave Briccetti]]: [[Use DosAllocMem for Boundary Overflow Protection]] | * [[Björn Fahller]]: ''[[Encapsulating Extended Attributes - Part 1/2|Encapsulating Extended Attributes]]'' | ||
* [[Dave Briccetti]]: ''[[Use DosAllocMem for Boundary Overflow Protection]]'' | |||
* [[Darrell Spice]]: ''[[STLport and VAC++ for OS/2]]'' | |||
* [[Gordon Zeglinski]]: ''[[The STL (Standardized Template Library)]]'' | |||
* [[Standard Template Library]] | |||
===Books=== | ===Books=== | ||
* Bjarne Stroustrup: The C++ Programming Language (4th edition) | * Bjarne Stroustrup: ''The C++ Programming Language'' (4th edition) - 2013, ISBN 0321958322 | ||
: More or less the standard text for learning C++, requires some prior programming knowledge, preferably [[C]]. | : More or less the standard text for learning C++, requires some prior programming knowledge, preferably [[C]]. | ||
* Bjarne Stroustrup: The C++ Programming Language (2nd edition) - | * Bjarne Stroustrup: ''The C++ Programming Language'' (2nd edition) - Addison-Wesley 1990, ISBN 0-201-53992-6 | ||
:An older version of the same book, again not for beginners but at half the size of the current version this is in some ways a better read for those that are using vintage compilers such as [[VisualAge C++]]. | :An older version of the same book, again not for beginners but at half the size of the current version this is in some ways a better read for those that are using vintage compilers such as [[VisualAge C++]]. | ||
* Margaret A. Ellis & Bjarne Stroustrup: The Annotated C++ Reference Manual - | * Margaret A. Ellis & Bjarne Stroustrup: ''The Annotated C++ Reference Manual'' - Addison-Wesley 1990, ISBN 0-201-51459-1 | ||
: In some ways better than the other Stroustrup works as a reference book, the explanations of some of the rules are much clearer. Not a tutorial, not for beginners. | : In some ways better than the other Stroustrup works as a reference book, the explanations of some of the rules are much clearer. Not a tutorial, not for beginners. | ||
* Taligent: ''Taligent's Guide to Designing Programs: Well Mannered Object-Oriented Design in C++'' | * Taligent: ''Taligent's Guide to Designing Programs: Well Mannered Object-Oriented Design in C++'' - Addison-Wesley 1994 - Available to read [https://root.cern.ch/TaligentDocs/TaligentOnline/DocumentRoot/1.0/Docs/books/WM/WM_1.html online form here] - ISBN 0-201-40888-0 | ||
:Although outdated, a really good introduction to object oriented C++, not a beginners book but suitable for intermediate and advanced users. | :Although outdated, a really good introduction to object oriented C++, not a beginners book but suitable for intermediate and advanced users. | ||
* [[Anthony S. Rudd]]: ''C++ Complete: A Reference and Tutorial to the Proposed C++ Standard'' - 1994 | * [[Anthony S. Rudd]]: ''C++ Complete: A Reference and Tutorial to the Proposed C++ Standard'' - Wiley 1994, ISBN 0-471-06565-X | ||
* [[Kris Jamsa]]: ''Jamsa's C/C++/C# Programmer's Bible: 2nd edition'' | * [[Kris Jamsa]]: ''Jamsa's C/C++/C# Programmer's Bible: 2nd edition'' - Delmar Cengage Learning 2002, ISBN 0766846822 | ||
===Articles=== | ===Articles=== | ||
* David R. Tribble: [http://david.tribble.com/text/cdiffs.htm Incompatibilities Between ISO C and ISO C++] - Old but highly useful document for those wanting to port C code to C++ | * David R. Tribble: [http://david.tribble.com/text/cdiffs.htm Incompatibilities Between ISO C and ISO C++] - Old but highly useful document for those wanting to port C code to C++ | ||
===Tutorials and other learning material=== | ===Tutorials and other learning material=== | ||
* EDM/2 has its own C++ tutorial written by Terry Norton: | * EDM/2 has its own C++ tutorial written by Terry Norton: | ||
[[C++ Class Part 1|Part 1]], [[C++ Class Part 2|Part 2]], [[C++ Class Part 3|Part 3]], | |||
[[C++ Class Part 4|Part 4]], [[C++ Class Part 5|Part 5]], [[C++ Class Part 6|Part 6]] | |||
[[C++ Class Part 1|Part 1]] | * [[MIX Software]] has a number of video courses available that focus on teaching C++, both for the [http://www.mixsoftware.com/product/cpvideo.htm beginner] and tackles [http://www.mixsoftware.com/product/advcpp.htm more advanced topics] as well, note that these are delivered in VHS cassette format. | ||
* The author of C++, Bjarne Stroustrup has a lot of introductory material on [http://www.stroustrup.com his homepage] | |||
[[C++ Class Part 2|Part 2]] | |||
[[C++ Class Part 3|Part 3]] | |||
[[C++ Class Part 4|Part 4]] | |||
[[C++ Class Part 5|Part 5]] | |||
[[C++ Class Part 6|Part 6]] | |||
* [[MIX Software]] has a number of video courses available that focus on teaching C++, both for the [http://www.mixsoftware.com/product/cpvideo.htm beginner] and tackles [http://www.mixsoftware.com/product/advcpp.htm more advanced topics] as well, note that these are delivered in | |||
* The author of C++, Bjarne Stroustrup has a lot of | |||
==Links== | ==Links== | ||
* [http://www.computerworld.com.au/article/250514/a-z_programming_languages_c_/ The A-Z of Programming Languages: C++] - An interview with Bjarne Stroustrup - From [[Computerworld]]. | * [http://www.computerworld.com.au/article/250514/a-z_programming_languages_c_/ The A-Z of Programming Languages: C++] - An interview with Bjarne Stroustrup - From [[Computerworld]]. | ||
;USENET | |||
* [news:comp.lang.c++.moderated comp.lang.c++.moderated] - Moderated C++ discussion group | * [news:comp.lang.c++.moderated comp.lang.c++.moderated] - Moderated C++ discussion group | ||
;Frequently Asked Questions (FAQs) | |||
* [ | * [https://isocpp.org/faq C++ Super-FAQ] - By Marshall Cline, Bjarne Stroustrup, Herb Sutter and Andrei Alexandresc. | ||
* [http://www.cs.rit.edu/~mjh/docs/c++-faq/ | * [http://www.cs.rit.edu/~mjh/docs/c++-faq/ C++ FAQ Lite] - By Marshall Cline (1991-2003). | ||
* [http://www.trumphurst.com/cpplibs/cpplibs.php Available C++ Libraries FAQ] - A huge list of C++ class libraries, for all platforms but a tad outdated. | * [http://www.trumphurst.com/cpplibs/cpplibs.php Available C++ Libraries FAQ] - A huge list of C++ class libraries, for all platforms but a tad outdated. | ||
* [http://faq.cprogramming.com/cgi-bin/smartfaq.cgi Alternative C++ FAQ] - From Cprogramming.com. | * [http://faq.cprogramming.com/cgi-bin/smartfaq.cgi Alternative C++ FAQ] - From Cprogramming.com. | ||
Line 214: | Line 186: | ||
==Standards== | ==Standards== | ||
Apart from the original AT&T documents there appear to be no sources of free C++ standards texts, not even pre-publication or beta editions. | Apart from the original AT&T documents there appear to be no sources of free C++ standards texts, not even pre-publication or beta editions. | ||
* Initially all C++ compilers and/or pre-processors were based on the original Bjarne Stroustrup pamphlets published by [[AT&T]] as | * Initially all C++ compilers and/or pre-processors were based on the original Bjarne Stroustrup pamphlets published by [[AT&T]] as C++ Reference Manual, Data Abstraction in C and C++ Tutorial. | ||
* ISO/IEC 14882:1998 - Aka C++98, the first formal standard, largely written by Stroustrup himself. | * ISO/IEC 14882:1998 - Aka C++98, the first formal standard, largely written by Stroustrup himself. | ||
* ISO/IEC 14882:2003 - Aka C++03 - Also has a "C++ Technical Report 1" with clarifications and errata or ISO/IEC TR 19768:2007, that is sometimes referred to as C++07. | * ISO/IEC 14882:2003 - Aka C++03 - Also has a "C++ Technical Report 1" with clarifications and errata or ISO/IEC TR 19768:2007, that is sometimes referred to as C++07. | ||
* ISO/IEC 14882:2011 - Aka C++11 | * ISO/IEC 14882:2011 - Aka C++11 | ||
* | * ISO/IEC 14882:2014 - Aka C++14 (2014-12) | ||
* | * ISO/IEC 14882:2017 - C++17 | ||
* ISO/IEC 14882:2020 - C++20 (2020-12) | |||
* [https://isocpp.org ISO C++ Working group homepage] | * [https://isocpp.org ISO C++ Working group homepage] | ||
[[Category:Programming Languages]] [[Category:C++]] | [[Category:Programming Languages]] [[Category:C++]] |
Latest revision as of 14:12, 10 January 2023

A language in the CPL branch of the Algol family of programming languages, C++ is basically AT&T C with the object-oriented features of Simula. While you can compile and run C programs in a C++ environment and some C++ compilers are actually just C compilers with a pre-processor, C++ is in fact a very distinct language to C that by design uses mostly the same syntax.
History
C++ was first implemented as a rudimentary pre-processor for C in 1979 and was then known simply as C with Classes, the name was changed to C84 in 1983 and when people realised that it would clash with the naming convention for the ANSI C formal standard process that had already begun it was changed again to C++ in 1985.
- Oct 1985: Cfront 1.0
- 1998: C++98 (ISO/IEC 14882:1998)
- 2003: C++03 (ISO/IEC 14882:2003)
- 2011: C++11 (ISO/IEC 14882:2011)
OS/2 implementations
- Borland C++ for OS/2
- Glockenspiel C++
- GNU C++ (g++) - Open Source
- IBM C Set++ for OS/2
- IBM VisualAge C++
- Metaware High C/C++
- Microway NDP C/C++
- Open Watcom C/C++ - Open Source
- JPI TopSpeed C++
- Watcom C/C++
- Zortech C++
- Interpreters
- Cint - Open source - Interpreter from CERN, intended for educational use
OS/2 C++ libraries and class libraries
If the compiler supports both C and C++, you can use C libraries with C++ programs and vice versa. However using C++ libraries from C can be a bit kludgey and require you to write bindings. While using C libraries from C++ is less problematic it can also require you to write some interfaces, take a look at the C page for available C libraries. Also see the Standard Template Library for STL support.
GUI class libraries
- Cubus OS/2 Class Library - Encapsulates PM and VIO API's - Open source
- Liant C++/Views - Multi-platform app framework/GUI library
- ObjectPM - Presentation Manager classes
- OpenZinc (formerly Zinc) - Multi-platform UI library - Originally commercial, now open source
- Qt - Multi-platform application and UI framework
- StarDivision StarView
- V C++ GUI Framework - Multi-platform - Open source
Database and file management
- C/Database Toolchest - Library for database creation and maintenance
- CdBFile - For reading/writing .dbf/xBase files - Open Source
- CSLIB - Database classes and generator
- CThrough - Graphics class library
- dbfLIB++ - A tool that allows you to work with xBase databases
- e_Comm - Communications and networking
- e_Db - Database engine
- e_Fs - Virtual file system
- Kroni's Classes - Class library with sundry PM functions - PostcardWare
- Lily - Embeddable LISP - Open Source
- Net.h++ - Networking and comms
- The Open Objects Library (OOL) - Originally freeware, now open source
- Socket++ - Networking library - Open Source
- Threads.h++ - Multi-threading
- Tools.h++ - Foundation classes
- WebM libvpx - VP8/VP9 streaming video - Open Source
- Xerces C++ - XML parser - Open Source
- ZGRAF - Graphing library
Data compression
Open source:
Signal processing
- Aquila - DSP library
- Simple SPL - DSP library - Freeware
GUI and application generators with C++ output
- Hockware VisPro/C++ - GUI Creator
- JBA Guidelines - GUI/Database/Application creator
- Professor Owl - Open Source - For Borland OWL only
- Vestronix Pro C - Database and spreadsheet application generator
Translators that generate C++ output
- Oracle Pro C - SQL > C++
- Tower Eiffel - Can optionally generate C++ instead of native output
Workframes and or IDE's
- CommonPoint
- Object WorkBench - Shareware
Code verifiers, beautifiers, visualisers and other C++ source code utilities
- CC-Rider C++ - Static analyser, beautifier and visualiser.
- DOC++ - Automatic document generator - Open source
- Ephedra - C/C++ to Java - Open source
- Exuberant ctags - Creates index files out of C++ source files - Open source
- PC-Lint
- SourceLink - Browser/Editor/Visualiser
C++ source code snippets, archives and collections
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
- Dave Briccetti's Programming Samples - Sundry C++ code example
- OS/2 Primecuts - OS/2 API Examples - Open source
- PostWhat WPS Class Example - WPS code and registration example - Open Source
Applications with a C++ programming interface
- PostgreSQL - SQL relational database system - Open source
DOS implementations
- Borland C++
- Borland Turbo C++
- Comeau C++
- Glockenspiel C++ (Guidelines C++, Oasys Designer C++)
- Intek C++
- Metaware High C/C++
- Microsoft C/C++ 7.0
- Watcom C/C++
- Orange C/C++ Compiler - Open Source
- Salford Software C++
- TopSpeed C++
- Digital Mars C/C++, Symantec C++, Zortech C++
- Interpreter
- Cint - Open source - Current - Interpreter from CERN, intended for educational use
Class libraries
- C/Database Toolchest - Library for database creation and maintenance
- CdBFile - For reading/writing .dbf/xBase files - Open Source
- e_Db - Databse engine
- ZGRAF - Graphing library
Editors support
- Boxer - C++ support included by default
- BRIEF
- Elvis - C++ syntax support included by default - Open source
- FTE - Has support for syntax highlighting, code folding and syntax-aware autoindent.
Implementations that run under WinOS/2
- Microsoft C/C++ 7.0 - Commercial - Discontinued
- TopSpeed C++ - Commercial - Discontinued - Cross compilation from DOS or OS/2 only
WinOS/2 compatible libraries and class libraries
- C/Database Toolchest - Library for database creation and maintenance - Note that the correct library for Win16b development is called the DOS library (but contains Win 16b libs as well) and not the Windows one.
- Net.h++ - Networking and comms
- Tools.h++ - Foundation classes
- V C++ GUI Framework - Multi-platform - Open source
Publications
Note that product specific publications are listed on their relative product page.
- Björn Fahller: Encapsulating Extended Attributes
- Dave Briccetti: Use DosAllocMem for Boundary Overflow Protection
- Darrell Spice: STLport and VAC++ for OS/2
- Gordon Zeglinski: The STL (Standardized Template Library)
- Standard Template Library
Books
- Bjarne Stroustrup: The C++ Programming Language (4th edition) - 2013, ISBN 0321958322
- More or less the standard text for learning C++, requires some prior programming knowledge, preferably C.
- Bjarne Stroustrup: The C++ Programming Language (2nd edition) - Addison-Wesley 1990, ISBN 0-201-53992-6
- An older version of the same book, again not for beginners but at half the size of the current version this is in some ways a better read for those that are using vintage compilers such as VisualAge C++.
- Margaret A. Ellis & Bjarne Stroustrup: The Annotated C++ Reference Manual - Addison-Wesley 1990, ISBN 0-201-51459-1
- In some ways better than the other Stroustrup works as a reference book, the explanations of some of the rules are much clearer. Not a tutorial, not for beginners.
- Taligent: Taligent's Guide to Designing Programs: Well Mannered Object-Oriented Design in C++ - Addison-Wesley 1994 - Available to read online form here - ISBN 0-201-40888-0
- Although outdated, a really good introduction to object oriented C++, not a beginners book but suitable for intermediate and advanced users.
- Anthony S. Rudd: C++ Complete: A Reference and Tutorial to the Proposed C++ Standard - Wiley 1994, ISBN 0-471-06565-X
- Kris Jamsa: Jamsa's C/C++/C# Programmer's Bible: 2nd edition - Delmar Cengage Learning 2002, ISBN 0766846822
Articles
- David R. Tribble: Incompatibilities Between ISO C and ISO C++ - Old but highly useful document for those wanting to port C code to C++
Tutorials and other learning material
- EDM/2 has its own C++ tutorial written by Terry Norton:
Part 1, Part 2, Part 3, Part 4, Part 5, Part 6
- MIX Software has a number of video courses available that focus on teaching C++, both for the beginner and tackles more advanced topics as well, note that these are delivered in VHS cassette format.
- The author of C++, Bjarne Stroustrup has a lot of introductory material on his homepage
Links
- The A-Z of Programming Languages: C++ - An interview with Bjarne Stroustrup - From Computerworld.
- USENET
- comp.lang.c++.moderated - Moderated C++ discussion group
- Frequently Asked Questions (FAQs)
- C++ Super-FAQ - By Marshall Cline, Bjarne Stroustrup, Herb Sutter and Andrei Alexandresc.
- C++ FAQ Lite - By Marshall Cline (1991-2003).
- Available C++ Libraries FAQ - A huge list of C++ class libraries, for all platforms but a tad outdated.
- Alternative C++ FAQ - From Cprogramming.com.
Standards
Apart from the original AT&T documents there appear to be no sources of free C++ standards texts, not even pre-publication or beta editions.
- Initially all C++ compilers and/or pre-processors were based on the original Bjarne Stroustrup pamphlets published by AT&T as C++ Reference Manual, Data Abstraction in C and C++ Tutorial.
- ISO/IEC 14882:1998 - Aka C++98, the first formal standard, largely written by Stroustrup himself.
- ISO/IEC 14882:2003 - Aka C++03 - Also has a "C++ Technical Report 1" with clarifications and errata or ISO/IEC TR 19768:2007, that is sometimes referred to as C++07.
- ISO/IEC 14882:2011 - Aka C++11
- ISO/IEC 14882:2014 - Aka C++14 (2014-12)
- ISO/IEC 14882:2017 - C++17
- ISO/IEC 14882:2020 - C++20 (2020-12)
- ISO C++ Working group homepage