QuoteOriginally posted by: jikanNo, C is not faster than C++ but what I meant is that it's easier to code faster code in C than C++ (well, except if you use C++ as a "better C", then it's just the same).This is actually a common misconception popular in the early pre-standard era (early 1990s, mostly), when the knowledge of C++ features was poor (some of the basic fundamentals, like templates were considered "too advanced") and compilers were of pretty low quality relative to more mature C compilers (at that time).I don't think it's true anymore. As renorm noted, there's (mostly) a subset relationship between the languages per se.But I think (I'm open to discussion) that it might go even further:You can achieve faster code in idiomatic C++ than a hand-crafted solution of the same problem in idiomatic C. For instance, compare implementation of an arbitrary map / reduce algorithm acting on an arbitrary data-structure via (C++) function objects applied to a data-structure with STL algos to (C) function pointers applied to a data-structure in a loop: operator() can be inlined, function passed-by-ptr -- not really. Hence, you'll have function-call overhead in C, while avoiding one in C++. C++ code will be also more elegant, easier to read, friendlier to maintain. What's not to like?Moreover, with function templates you can achieve a static/compile-time polymorphism, while attempting to achieve that by hand through the use of fn. ptrs. & selection statements (in other words: reinventing virtual functions) costs you in run-time (and ugly code).Finally, in the new standard r-value references give you easy-to-use, language supported, move semantics, so you can construct a huge container in a local (block) scope in a function and easily pass-it-up to the call site (btw, that's a better way to achieve the behavior of pass-by-ref--mutate--return-by-ref code snippet posted by Cuch.) without O(n) copying costs (at most some O(1) for internal pointer(s) reassignments, subject to compiler implementation/optimization). You have some of that even today (for a long time, in fact) in a form of (N)RVO for most modern implementations.I still hear plenty of embedded programmers swearing by C and while there is _some_ truth to _some_ of their statements (e.g. a particular C compiler for a particular micro-controller might produce a smaller code resulting in smaller memory footprint than the one produced by less mature C++ compiler for a given platform), in general I've grown rather skeptical toward claims of higher C performance.The bottom line is:- familiarize yourself with ISO/IEC TR 18015:2006(E) Technical Report on C++ Performance- check how the overhead measures apply to your compiler & platform/environment (and be sure to re-check when applicable), identify zero-overhead features and keep in mind the possibly-unacceptable-overhead ones,- based on that, select the features wisely (calibrating them to your task at hand), avoiding premature optimization _and_ premature pessimization,- enjoy the best of both worlds