struct vs class in C++

Maybe I should apologize for going on about C++ yet again, but, following on from the recent online lecture series that I conducted, I learned that there is a lot of interest in the topic. I also found the experience a very fruitful source of ideas, inspiration and queries – much of this will appear here.

During the lectures, I would periodically pose a question, which the attendees could answer via the chat. An interesting one was: how does a struct differ from a class in C++? …

1I will start by defining a struct in C. I would see it as a customized, composite data type, which may be constructed from the existing built-in data types [int, char, etc.], bit fields [integers of specified bit size] and other structs. This example shows a simple example of a struct definition, along with the declaration of a variable of that type and access to one of the fields. A struct is a handy and flexible way to represent data. Similar facilities exist in most modern programming languages.

How does a C++ class differ from a C struct? There are a few differences. The key ones are:

  • 2A class can also contain functions [called methods].
  • The member variables and methods are hidden from the outside world, unless their declaration follows a public label.
  • There can be a pair of special methods – the constructor and destructor – that are run automatically when an instance of the class [an object] is created and destroyed.
  • Operators to work on the new data type can be defined using special methods [member functions].
  • One class can be used as the basis for the definition of another [inheritance].
  • Declaring a variable of the new type [an instance of the class; an object] requires just the name of the class – the keyword class is not required.

Most of these are illustrated in the example here.

3But what about a struct in C++? The last example here gives a clue. 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.

Having imparted this information, I urge you not to exploit it too heavily. A key priority when you are writing code is to ensure that it is readable [=maintainable]. Somebody – it could be you – might need to look at this code in a year’s time and understand what it does. I have heard advice as follows: Assume that the person that will maintain your code is an armed psychopath, who has limited patience and knows your home address.

Want to stay up to date on news from Siemens Digital Industries Software? Click here to choose content that's right for you


0 thoughts about “struct vs class in C++

Leave a Reply

This article first appeared on the Siemens Digital Industries Software blog at