Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it true that there is no need to learn C because C++ contains everything? [closed]

Tags:

c++

c

I am taking a class in C++ programming and the professor told us that there is no need to learn C because C++ contains everything in C plus object-oriented features. However, some others have told me that this is not necessarily true. Can anyone shed some light on this?

like image 226
user23126 Avatar asked Sep 28 '08 03:09

user23126


People also ask

Do I need to learn C?

C is the foundation that most other languages and programming language creators have built other languages on top of C, including Python, Ruby, JavaScript, and C++. By knowing C, you are setting yourself up for success in understanding other programming languages widely used in the industry.

Is C required to learn C++?

There is no need to learn C before learning C++. They are different languages. It is a common misconception that C++ is in some way dependent on C and not a fully specified language on its own. Just because C++ shares a lot of the same syntax and a lot of the same semantics, does not mean you need to learn C first.

Does C++ have everything that C has?

This question already has answers here: I have read in tutorials that C++ contains the entire C programming language. If you learn C++ you will eventually learn most of C with some differences between the languages that you will learn over time.

Can C++ do everything C does?

Although C++0x did include some of C99 features, many of them are just inherently incompatible, like the complex type. Show activity on this post. You can do almost everything in any of the programming languages.


1 Answers

Overview:

It is almost true that C++ is a superset of C, and your professor is correct in that there is no need to learn C separately.

C++ adds the whole object oriented aspect, generic programming aspect, as well as having less strict rules (like variables needing to be declared at the top of each function). C++ does change the definition of some terms in C such as structs, although still in a superset way.

Examples of why it is not a strict superset:

This Wikipedia article has a couple good examples of such a differences:

One commonly encountered difference is that C allows implicit conversion from void* to other pointer types, but C++ does not. So, the following is valid C code:

int *i = malloc(sizeof(int) * 5);   

... but to make it work in both C and C++ one would need to use an explicit cast:

int *i = (int *) malloc(sizeof(int) * 5) 

Another common portability issue is that C++ defines many new keywords, such as new and class, that may be used as identifiers (e.g. variable names) in a C program.

This wikipedia article has further differences as well:

C++ compilers prohibit goto from crossing an initialization, as in the following C99 code:

 void fn(void)  {   goto flack;   int i = 1;  flack:    ;  } 

What should you learn first?

You should learn C++ first, not because learning C first will hurt you, not because you will have to unlearn anything (you won't), but because there is no benefit in learning C first. You will eventually learn just about everything about C anyway because it is more or less contained in C++.

like image 148
Brian R. Bondy Avatar answered Sep 22 '22 15:09

Brian R. Bondy