What are the performance tradeoffs of using C++ instead of C? Are there any ways of overcoming these tradeoffs?
In general, C++ is every bit as efficient as C is.
The problem (if you want to call it that) is that C++ can do a lot of things for you automatically. For example, a C++ string class can simplify a lot of functionality for you. When you declare a string object and assign a string to it, the class must allocate and copy memory, and when the object is deleted or goes out of scope, the destructor will probably need to release that memory.
Obviously, this takes more time than simply declaring an array in C. Virtual functions can also require additional overhead.
The simple answer is that you need to be aware of what’s going on under the surface if you plan to write very optimized programs.
If you want to avoid the overhead normally associated with C++, don’t use any rich C++ class library with all sorts of functionality at the ready. Instead, write some of your own C++ classes, step through them with the debugger, and work to keep them efficient.