Difference between revisions of "C++"
Shedletsky (talk | contribs) (Noticed a Cpp page was the most-wanted on this wiki - so here is a first draft. Which RLs are written in C++ (vs. C)?) |
Shedletsky (talk | contribs) |
||
Line 16: | Line 16: | ||
In ''The Design and Evolution of C++'' ISBN 0-201-54330-3, Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in ''The Design and Evolution of C++''. | In ''The Design and Evolution of C++'' ISBN 0-201-54330-3, Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in ''The Design and Evolution of C++''. | ||
*C++ is designed to be a statically | *C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C | ||
*C++ is designed to directly and comprehensively support multiple programming styles ( | *C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming) | ||
*C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly | *C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly | ||
*C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C | *C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C |
Revision as of 02:50, 21 September 2005
C++ (pronounced "see plus plus") is a general-purpose computer programming language. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. During the 1990s, C++ became one of the most popular commercial programming languages. Strictly speaking, C++ is not a superset of C, but for all practical purposes one can consider it thus.
Differences in C++ from C
Features introduced in C++ include declarations as statements, function-like casts, new
/delete
, bool
, reference types, const
, inline
functions, default arguments, function overloading, namespaces, classes (including all class-related features such as inheritance, member functions, virtual functions, abstract classes, and constructors), operator overloading, templates, the ::
operator, exception handling, and run-time type identification.
C++ also performs more type checking than C in several cases.
Comments starting with two slashes ("//") were originally part of C's predecessor, BCPL, and were reintroduced in C++.
Several features of C++ were later adopted by C, including const
, inline
, declarations in for
loops, and C++-style comments (using the //
symbol). However, C99 also introduced
features that do not exist in C++, such as variadic macros and better handling of arrays as parameters.
Design of C++
In The Design and Evolution of C++ ISBN 0-201-54330-3, Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in The Design and Evolution of C++.
- C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C
- C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming)
- C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
- C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
- C++ avoids features that are platform specific or not general purpose
- C++ does not incur overhead for features that are not used
- C++ is designed to function without a sophisticated programming environment
Please refer to the indepth book on C++ Internals by Stanley B. Lippman
(he worked on implementing/maintaining C-front the original C++ implementation
at Bell Labs).
"Inside the C++ Object Model" documents how the C++ compiler converts your program statements into an in-memory layout.
Rogue-like Specific Details
C++ is a great language to write a rogue-like with. It has all the freedom of C, with some additional language features which can make a programmer's life easier (such as templates). The only real downside is that the C++ is implemented in a non-standard way across platforms, so using C++ instead of C or Java may lead to portability issues.
Rogue-likes Written in C++
Someone please fill some in.