Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ Structs - Pointless? [duplicate]

Tags:

c++

c

Possible Duplicate:
What are the differences between struct and class in C++

I'm just trying to figure out if using 'C structs' in C++ are essentially useless or not. Do you gain anything by using them (opposed to simply creating another class)?

In C the point of structs is obvious, simply contiguous allocations of grouped data and a nice way to access said data, in C++ I feel the role becomes a little more vague.

Seeing as that you can have functions which are members of structs, instance variables, and visibility labels, the only real difference that I see between structs and classes in C++ is that struct members default to public while class members default to private. The way I see them, they can actually both be implemented with the same exact underlying system.

So am I missing something here as to the purpose of structs in C++? Or have they kind of lost their purpose, as I feel they have in C++?

like image 509
Syndacate Avatar asked Oct 27 '12 20:10

Syndacate


6 Answers

In my opinion, Structures doesn't give you anything that can't be implemented by a class. But, Structures are kept in C++ in order to have backward compatibility with c

like image 139
kiranmathewkoshy Avatar answered Oct 16 '22 12:10

kiranmathewkoshy


Classes and structures in C++ are almost the same, the only things that separates them is that the default visibility of a class is private while in a struct it's public.

The reason to keep having structures in C++ was probably to keep the language compatible with C, so it would be easier to port C code to C++, or for programmers to make that transition.

As for the usage of structures contra classes, I personally use them just like would in C, to group related variables together in a single "object".

like image 23
Some programmer dude Avatar answered Oct 16 '22 11:10

Some programmer dude


Undoubtedly the reason they are there is for compatibility with C. But you are right, although there are small differences between class and struct in C++ there is nothing you can do with structs that you cannot do with classes (and vice versa).

Personally I use structs only when the same declaration would be legal in C, to emphasize the C-like nature of whatever it is I'm doing.

like image 32
john Avatar answered Oct 16 '22 10:10

john


They are implemented "with the same exact underlying system". In fact, you can actually declare a type using class keyword and then define it using struct keyword. Basically, they are exactly the same aside from the conceptual difference you already mentioned: default access rights.

I don't see though why would one call them "useless". The usage of the keyword became a matter of personal preference and/or coding standard. Like "use struct fro POD types", or "use struct for types with no incapsulation/access control".

With the same degree of success one can declare the built-in -> operator "useless" because of its equivalence to *+. combination.

like image 45
AnT Avatar answered Oct 16 '22 11:10

AnT


You can have the same behavior as in C, nobody forces you to use the additional "class" features. So if you understand their purpose in C, it should be understandable in C++ as well (the "C-like" portion at least).

like image 26
SomeWittyUsername Avatar answered Oct 16 '22 11:10

SomeWittyUsername


As Joachim Pileborg already pointed out, classes and structures are almost the same thing in C++.

I would, however, recommend to use struct for "dumb" data holders with public members and class for properly encapsulated classes as a style convention.

like image 27
Philipp Avatar answered Oct 16 '22 10:10

Philipp