Well I've had a few PM's but thought I might just start here with some very easy basics and in particular to show how C++ is *very different* to C.
Let's start with one of the simplest programs that any programmer would know and that is of course "hello world":
#include <iostream>
using namespace std;
int main( )
{
cout << "Hello World!" << endl;
}
Now for those who might remember how "hello world" looked in C you'll notice a few differences.
Firstly the "standard header" files in C++ do not have a file extension - so to #include iostream you use <iostream> not <iostream.h>. If you are wondering why - the reason is that unfortunately before C++ became "standardised" there were actually different extensions for header files being used by different vendors (such as .hpp or even .hxx instead of .h) so omitting the file extension became the "standard" to make things easier for compiler vendors and is actually nicer to read anyway (who cares what the file extension is when it is a "standard" header?).
The next thing that a C programmer might be confused by is the "using namespace std" statement. What on earth is that for? Well a problem that emerged from C and the development of libraries with their necessary #include's for usage was one of "name conflicts". So if I was using the "red_widget" library and the "blue_widget" library I could end up with a situation that I had a function called "destroy_widgets" in *each* library making it impossible to include both headers (and in particular to call one or the other function) without having to resort to nasty "pre-processor" tricks.
C++ solves this problem by allowing functions (as well as classes and even objects) to be placed in a "namespace" (they can be nested also) such that then provided that you place your "red_widget" library in a "red" namespace and your "blue_widget" library in a "blue" namespace you can avoid such ambiguities that cannot be avoided in C (and even call each explicitly via red::destroy_widgets and blue::destroy_widgets).
So without the "using namespace std" you would need to use std::cout and std::endl in the above code (as both "cout" and "endl" belong to the "std" namespace). Although not considered good practice to put a "using namespace" in a header file it is perfectly acceptable in a C++ source file and should never be a problem in particular to do so for the "std" namespace (being that of the "standard" library).
Again those more familiar with C might wonder about "cout", "endl" and what look like "bit shift" operators. In short "standard input", "standard output" and "standard error" are implemented as "iostream" objects in C++ called "cin", "cout" and "cerr" respectively. The << operator (as implemented by the underlying ostream class) is used to "write" to that stream (likewise a >> operator is used to "read" from an input stream). So already in such a short program we have to understand that C++ has "overloaded operators" something that might seem rather complex but it provides for some very powerful and neat features that make C++ quite different to most other languages around.
So now it makes sense that "cout << "Hello World!" is going to output "Hello World!" to "standard output" (or the "console" as we generally call it) but what does the output of "endl" do?
The answer to that is actually perhaps not exactly what you think (unless you know C++ well) as it actually does two things (most people I used to interview for C++ programming positions did not actually know this). I will leave this up to the reader(s) to investigate (and post an explanatory reply if you like).
Finally the one thing that might appear to be "missing" from our "main" is a return statement. The answer to that is that it is "optional" in C++ (when omitted the program will always return 0 to the OS).