I'm not sure, the arduino stuff I've seen is pretty much C apart from the syntax
C++ is almost a superset of C, so you may think that's C but it's not.
Here's an example:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
The "
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);" declaration is not allowed o C ANSI syntax, in fact this piece of code call the constructor of the
lcd object (C++). It's a stripped down C++ (not STL, no dynamic memory allocation) .
The power of C++ is the STL. To effectively use C++ you need dynamic memory allocation.
It's one part. There are features you can use without dynamic allocation. If you can arrange so that eg. all allocation is done on startup, or you never free memory, dynamic allocation isn't even a problem.
Without dynamic allocation you don't have strings, vectors, queues, maps, lists, so you will have an level of abstraction almost equal to C, then I don't see any advantage in using C++ (you could argue that OOP is more elegant but I think that is easier for a beginner to understand functions call/return than classes, objects, constructors, destructors, etc).