Washu: You are more likely to find undefined behavior in a C++ program than to not.
xFFFF0000: But that is just like saying that you are more likely to find bugs in a C++ program than not.
Washu: Both of which are true, xFFFF0000.
Washu: In other words, its the same as saying: "You're going to fuck up, guaranteed!"Washu on standard defined behavior in C++ on #gamedev (on irc.afternet.org)
Developed starting in the early 1980s, and finally standardized in 1998, C++ is the spiritual successor to the C language, bending over backwards to inter-operate with code already written in the language. An industry heavyweight thanks to the same, it's momentum (in the form of game engines and other libraries of code) perpetuates the game development community for AAA desktop and console titles. However, it is not without it's problems — it's paltry standard library is even today regarded with suspicion from coders of the old vanguard, often encouraging newbies to roll their own untested, bug ridden reimplementations. This, coupled with the dangerous nature of the language (with "undefined behavior" and hard to track down bugs around every corner), causes C++ to be a very difficult language to learn and use, compared to others.
It is the personal opinion of the author that C++ should not be a first language, nor learned at all until one is sufficiently grounded enough in the basics of programming to have developed some basic graphical games (using, say Python + PyGame), if learned at all. We have newer, cleaner, easier tools which don't default to create-a-bug mode that you can be far more productive in 95% of the time than in C++. That said, for the remaining 5% where you really need C++ (the cutting edge of next gen performance requirements, or legacy coding), or for the just-plain-masochistic like myself, here's a list of resources relevant to C++.
Articles
C++ 101 — Basic Knowledge
Include Guards — rationale and use of
Introduction to Debugging — gamedev.net article
C++ Pitfalls — identifying problems
Standard C++ Library Reference (MSDN) — General documentation on the SC++L
C++ 102 — Basic Patterns
RAII — rationale and use of
C++ 103 — Other language basics
Global Variables — rationale and use of (and against)
C++ Classes vs Structs — clears up the differences (and lack thereof) between the C++ struct and class keywords
Tools
IDEs
Visual C++ 2008 Express Edition — Free IDE from Microsoft. Best of it's class.
Libraries
- General
- Boost C++ Libraries — C++ tools you shouldn't live without
- boost::asio — Asynchronous I/O and networking library
- Graphics
- SDL — Simple Directmedia Layer
Wall of shame
Visual Studio 6 — This is not a C++ compiler. It is a pre-standard abomination which Microsoft has stopped supporting for even it's most integral APIs such as DirectX.