It's often stated out in the world that "C is a subset of C++". This is not always accurate, and parts of this sneaks into the streams at times.
One of the differences I would like to highlight which can mask errors is the semantics of an empty parameter list in C and in C++.
| // C++
void f1(void) // compatibility syntax with C, takes no argument
void f2() // function taking no arguments
// C
void f3(void) // function taking no arguments
void f4() // function taking any number of arguments
|
A reason this matters is that if you define a function in C with an empty parameter list, you can accidentally provide arguments when calling it and it will compile.
Any other favorite pet differences and caveats between the very related languages you've encountered and that you want to highlight?