I'm being offered a C++ job and need a quick brush-up project so I can become fluent in the language again. Currently I develop iPhone applications and became fluent in C/Obj-C from a background of Python, Java and C# in a matter of days. I'm looking for an idea for a small project, or a brush-up sort of course online that I can complete quickly. I know C++ is a weird language, so this is why I ask. The company mainly develops embedded applications.
Embedded applications often means subset of C++. Be aware of that. That being said, with the very free-form style of C++, writing a program to learn the language is meaningless. In fact, Most C programs are, or are very close, to being valid C++ programs.
The best way to learn C++ for a programmer, IMHO, is to learn to use the STL and Boost. It/they might not be available on the platforms you use at work, but you'll familiarize yourself with a lot of the language features.
Let me suggest my old boss's book The C++ FAQ Book. It leads you through a lot of the odd cases. Also check out the online version, the C++ FAQ Lite.
C++ FAQ Lite and GotW Archive are good resources, with one of the major points discussed being the ways to (not) shoot yourself in the foot in C++.
If you're OK with C, and its an embedded job, I'd focus on the classic C++ "features":
- Virtual functions
- STL containers
- Exceptions
- Run-time type information.
Knowing how these are implemented and the overhead of each (particularly #1) will serve you well in the embedded context. Knowing the performance characteristics of the STL containers is also general O(n) knowledge, which can also be applied in many other contexts.
Also, try googling "C++ interview questions". They are often a good place to find out what you know, and what you think you know.