Reputation: 13896
For those of you with experience with both, what are the major differences? For a newcomer to either, which would be better to learn? Are there situations where you might choose C but then other situations where you would choose C++? Is it a case of use the best tool for the job or one is significantly better than the other. I know C++ is an "enhancement" of C, but it was created in '83 and hasn't completely replaced C so there must be something more to it.
I know this question is subjective and I am not trying to start any religious war, so please try to be as objective as possible. Clear strengths and weaknesses and comparisons.
Upvotes: 14
Views: 12617
Reputation: 18449
You use C++ where you can and C where you have to. Generally speaking, if you have a C++ compiler available for your platform, there's no reason not to use that. C is a perfectly good language but C++ adds so much extra without losing you any power, so it would almost always be the language of choice.
Upvotes: 2
Reputation: 5951
If you've never used a language that requires you to do manual memory management I would go for C first.
Concentrate on the C fundamentals like strings, function pointers, and how memory is used and managed. These will all transfer when you make the transition to C++. Above all else, make sure you really grok pointers, how they relate to memory, and the relationship between pointers and arrays. I would say to be a well-rounded programmer understanding these things is required.
Then, go to C++ and learn about the OO model, templates, etc. Trying to do everything in C++ from the very beginning can be a little overwhelming.
Upvotes: 5
Reputation: 56113
For those of you with experience with both, what are the major differences?
C is a subset, C++ is a superset. C++ includes features to support object-oriented programming (e.g. "polymorphism"), and many other features.
For a newcomer to either, which would be better to learn?
C is easier (because it's a smaller topic), and C++ is better (because it's more powerful, includes C, and in my experience there are more jobs programming in C++ than there are in C).
Are there situations where you might choose C but then other situations where you would choose C++?
I'd choose C over C++ in the rare, rare situations where the target platform supports C but not C++ (i.e. on some embedded devices).
Upvotes: 2
Reputation: 198607
I would make the argument that you would be better off using C++ over C in most cases. You don't have to use all of the complicated features of C++ if you don't want to. There are a few things that C++ add that are really helpful for most cases:
Personally, I feel that those three things make using C++ worth it even if you use it to write C-like code (aka procedural, non object-oriented code).
Maybe if you're doing some kernel hacking or embedded systems development you should use C, but otherwise, I'd recommend C++.
Upvotes: 3
Reputation: 507035
While C is a pure procedural language, C++ is a multi-paradigm language. It supports
Apart from those, C++ has largely kept compatibility with C code, but there are some differences. Those can be read about in Annex D of the C++ Standard, together with reasons and possible fixed to make C code valid C++ code.
Upvotes: 15
Reputation: 2093
C++ is, as it's name implies and as you said in your question, an enhancement of C. It's a significant enhancement. (And I use the term 'enhancement' to refer to features, not to function.) The thing about enhancing, though, is that it means growth. C++ typically lends itself to much bigger programs. Applications, really. It's a high performance language, but it's big.
C, on the other hand, is used for kernel and driver programming for a reason. It's old (ancient?), small, and if you're smart, about as fast as you can get without writing assembler yourself. The tradeoff, obviously, is features. C doesn't have a lot of the nice big squishy concepts like classes and templates that C++ programmers like myself take for granted (yep, totally guilty).
So to answer your question more directly, most of my large, high performance projects get written in C++. If I'm working on something like a driver or an embedded system, I'll expect to be using C.
Upvotes: 6
Reputation: 4426
C++ is 99% a superset of C. It's a little more strict in syntax, with a few very minute differences in terms of things changing.
The biggest difference is that C++ makes an attempt at being object oriented. There's native support for classes.
There's a few other perks in C++: templates, stream operators, pass-by-reference (a bit less confusing than pass-by-pointer)
What do you lose out for going C++? It's missing some of the lowest-level hacks that a lot of people use C for. I don't remember any of them offhand, but I've never heard any good argument for tricking the compiler into doing what you want except as a way to push efficiency that extra 10%.
Upvotes: 9