Difference between revisions of "C++"

From RogueBasin
Jump to navigation Jump to search
(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. 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.
'''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 [[declaration|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.
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 [[datatype|typed]], general-purpose language that is as efficient and portable as 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 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.


==Rogue-like Specific Details==
==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==


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.
* {{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]]


==Rogue-likes Written in C++==
== Related Links ==


Someone please fill some in.
[[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

Related Links