Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Structs vs classes in C++ [duplicate]

Tags:

c++

class

People also ask

What is the difference between a struct and a class in C?

a struct is more like a data structure that is used to represent data. class, on the other hand, is more of a functionality inclined construct. It mimics the way things are and work.

Is struct and class same?

The only difference between a struct and class in C++ is the default accessibility of member variables and methods. In a struct they are public; in a class they are private.

Does C Copy structs?

In C/C++, we can assign a struct (or class in C++ only) variable to another variable of same type. When we assign a struct variable to another, all members of the variable are copied to the other struct variable.

Is struct more efficient than class?

Using struct has traditionally been more efficient, as searching for the correct method can be expensive.


Technically, the only difference between the two is that structs are public: by default and classes are private:

Other than that, there is no technical difference.

struct vs class then becomes a purely expressive nuance of the language.

Usually, you avoid putting complicated methods in a struct, and most of the time structs data members will stay public. In a class you want to enforce strong encapsulation.

struct = data is public, with very simple helper methods

class = strongly encapsulated, data is modified / accessed only through methods


I use structs for simple containers of types that provide no constructors or operators.

Classes for everything else.


Use a struct when you simply need a "bucket of stuff" that doesn't have logical invariants that you need to keep. Use a class for anything else.

See also what the C++ FAQ says on the subject.


Use a class if you have methods, a struct if not.

A class should hide all its internals only exposing methods or properties. A struct tends to expose all its internals and has no accessor methods.

Where only one bit of code is accessing some (related) data, a struct may be perfectly reasonable. Where multiple bits of code need to modify the data or if it's anything slightly complicated, a class would be a better bet.


The difference between Classes and Structs are that structs are groups of variables and classes represent objects. Objects have attributes AND methods and be part of a hierarchy.

If you're using C++ to take advantage of the OO capabilities it's best to use classes / objects which are more natural.


I always use class, even for just containers, for consistency. Its purely a choice of style since the difference between the two is negligible.