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)?) |
|||
(45 intermediate revisions by 30 users not shown) | |||
Line 1: | Line 1: | ||
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 | '''C++''' (pronounced "see plus plus") is a general-purpose intermediate-level computer programming language. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. Strictly speaking, C++ is not a superset of [[C]], but for all practical purposes one can consider it thus. | ||
During the 1990s, C++ became one of the most popular commercial programming languages, and it is still widely used today. Recently, however, more modern high-level scripting languages such as [[Python]] and [[Ruby]] are enjoying increasing popularity. | |||
==Differences in C++ from C== | ==Differences in C++ from C== | ||
Features introduced in C++ include | Features introduced in C++ include declarations as statements, function-like casts, <code>new</code>/<code>delete</code>, <code>bool</code>, reference types, <code>const</code>, <code>inline</code> functions, default arguments, function overloading, [[namespace (computer science)|namespaces]], classes (including all class-related features such as inheritance, member functions, virtual functions, abstract classes, and constructors), operator overloading, templates, the <code>::</code> operator, exception handling, and run-time type identification. | ||
C++ also performs more type checking than C in several cases. | C++ also performs more type checking than C in several cases. | ||
Line 16: | Line 18: | ||
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 | ||
*C++ avoids features that are platform specific or not general purpose | * C++ avoids features that are platform specific or not general purpose | ||
*C++ does not incur overhead for features that are not used | * C++ does not incur overhead for features that are not used | ||
*C++ is designed to function without a sophisticated programming environment | * C++ is designed to function without a sophisticated programming environment | ||
Line 30: | Line 32: | ||
"''Inside the C++ Object Model''" documents how the C++ compiler converts your program statements into an in-memory layout. | "''Inside the C++ Object Model''" documents how the C++ compiler converts your program statements into an in-memory layout. | ||
== | ==Roguelike 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 and classes). | |||
==C++ Roguelikes== | |||
* {{stable}} [[3059]] | |||
* {{defunct}} [[Abura Tan]] | |||
* {{defunct}} [[The Abyss of Nah-Karr]] | |||
* {{alpha}} [[Adeo]] | |||
* {{7DRL}} [[Backwards Gravity]] | |||
* {{7DRL}} [[City of the Condemned]] | |||
* {{stable}} [[Cogmind]] | |||
* {{alpha}} [[CyberRogue]] | |||
* {{stable}} [[Decker]] | |||
* {{stable}} [[Deliantra]] | |||
* {{beta}} [[DemiseRL]] | |||
* {{beta}} [[Doryen arena]] | |||
* {{alpha}} [[Downfall]] | |||
* {{stable}} [[Drakefire Chasm]] | |||
* {{stable}} [[Dragonslayer]] | |||
* {{beta}} [[Dungeon Crawl Stone Soup]] | |||
* {{7DRL}} [[DungeonMinder]] | |||
* {{7DRL}} [[Fatherhood]] | |||
* {{7DRL}} [[The Favored]] | |||
* {{stable}} [[Frozen Depths]] | |||
* {{alpha}} [[Geminum Orbis]] | |||
* {{stable}} [[Get Out!!]] | |||
* {{stable}} [[Grippy Socks]] | |||
* {{stable}} [[Hunger Games]] | |||
* {{beta}} [[Incursion]] | |||
* {{beta}} [[Infra Arcana]] | |||
* {{beta}} [[Into the Dungeon ++]] | |||
* {{stable}} [[IVAN]] | |||
* {{7DRL}} [[Jacob's Matrix]] | |||
* {{alpha}} [[Kaduria]] | |||
* {{beta}} [[Labyrinth of Reptoran]] | |||
* {{beta}} [[Lair of the Demon Ape]] | |||
* {{defunct}} [[The Legend of Saladir]] | |||
* {{beta}} [[Letrain]] | |||
* {{7DRL}} [[Letter Hunt]] | |||
* {{stable}} [[Linley's Dungeon Crawl]] | |||
* {{stable}} [[Lost Labyrinth DX]] | |||
* {{7DRL}} [[Magic Monsters]] | |||
* {{alpha}} [[Middlecrest]] | |||
* {{7DRL}} [[Mouse Crawl: Blackheather]] | |||
* {{beta}} [[Nazghul]] | |||
* {{alpha}} [[Papaki]] | |||
* {{alpha}} [[Peleron's Brilliant Rebirth]] | |||
* {{stable}} [[POWDER]] | |||
* {{beta}} [[PrinceVSZombies]] | |||
* {{stable}} [[Rings of Valor]] | |||
* {{beta}} [[Rogue Effect]] | |||
* {{7DRL}} [[Rogue Mercenaries]] | |||
* {{alpha}} [[Roguelike gcs]] | |||
* {{defunct}} [[QuickQuest]] | |||
* {{7DRL}} [[Save Scummer]] | |||
* {{stable}} [[SCOURGE]] | |||
* {{beta}} [[SewerJacks]] | |||
* {{stable}} [[Shadow of the Wyrm]] | |||
* {{beta}} [[Slaves to Armok II: Dwarf Fortress]] | |||
* {{beta}} [[The Wastes]] | |||
* {{alpha}} [[Tale of Arcana]] | |||
* {{stable}} [[The Ground Gives Way]] | |||
* {{7DRL}} [[True God]] | |||
* {{alpha}} [[Underbooks]] | |||
* {{7DRL}} [[Warlock of Firetop Mountain]] | |||
* {{beta}} [[Warlock's Mountain]] | |||
* {{defunct}} [[The Woods of Torbin]] | |||
* {{alpha}} [[X@COM]] | |||
* {{beta}} [[Xenocide]] | |||
* {{7DRL}} [[You Only Live Once]] | |||
* {{alpha}} [[Zaiband]] | |||
== | == Related Links == | ||
[[Category:Programming languages]] |
Latest revision as of 09:15, 14 November 2024
C++ (pronounced "see plus plus") is a general-purpose intermediate-level computer programming language. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. Strictly speaking, C++ is not a superset of C, but for all practical purposes one can consider it thus.
During the 1990s, C++ became one of the most popular commercial programming languages, and it is still widely used today. Recently, however, more modern high-level scripting languages such as Python and Ruby are enjoying increasing popularity.
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.
Roguelike 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 and classes).
C++ Roguelikes
- stable 3059
- defunct Abura Tan
- defunct The Abyss of Nah-Karr
- αlpha Adeo
- 7DRL Backwards Gravity
- 7DRL City of the Condemned
- stable Cogmind
- αlpha CyberRogue
- stable Decker
- stable Deliantra
- βeta DemiseRL
- βeta Doryen arena
- αlpha Downfall
- stable Drakefire Chasm
- stable Dragonslayer
- βeta Dungeon Crawl Stone Soup
- 7DRL DungeonMinder
- 7DRL Fatherhood
- 7DRL The Favored
- stable Frozen Depths
- αlpha Geminum Orbis
- stable Get Out!!
- stable Grippy Socks
- stable Hunger Games
- βeta Incursion
- βeta Infra Arcana
- βeta Into the Dungeon ++
- stable IVAN
- 7DRL Jacob's Matrix
- αlpha Kaduria
- βeta Labyrinth of Reptoran
- βeta Lair of the Demon Ape
- defunct The Legend of Saladir
- βeta Letrain
- 7DRL Letter Hunt
- stable Linley's Dungeon Crawl
- stable Lost Labyrinth DX
- 7DRL Magic Monsters
- αlpha Middlecrest
- 7DRL Mouse Crawl: Blackheather
- βeta Nazghul
- αlpha Papaki
- αlpha Peleron's Brilliant Rebirth
- stable POWDER
- βeta PrinceVSZombies
- stable Rings of Valor
- βeta Rogue Effect
- 7DRL Rogue Mercenaries
- αlpha Roguelike gcs
- defunct QuickQuest
- 7DRL Save Scummer
- stable SCOURGE
- βeta SewerJacks
- stable Shadow of the Wyrm
- βeta Slaves to Armok II: Dwarf Fortress
- βeta The Wastes
- αlpha Tale of Arcana
- stable The Ground Gives Way
- 7DRL True God
- αlpha Underbooks
- 7DRL Warlock of Firetop Mountain
- βeta Warlock's Mountain
- defunct The Woods of Torbin
- αlpha X@COM
- βeta Xenocide
- 7DRL You Only Live Once
- αlpha Zaiband