2

I have been reading Qt Creator's source code. When is using a struct more appropriate than using a class in C++?

Amani
  • 16,245
  • 29
  • 103
  • 153

4 Answers4

4

It is purely a matter of personal preference or coding conventions. struct and class are essentially the same in C++, with the difference being the default access specifiers and base classes being public for a struct and private for a class.

For example, here two definitions of Bar are equivalent:

class Foo {};
struct Bar : Foo {};
class Bar : public Foo {};

Here too:

class Foo {};
struct Bar : private Foo {};
class Bar : Foo {};

and here too:

class Bar
{
  int n;     // private
 public:
  double x;  // public
}; 

struct Bar
{
 private:
  int n;
 public:
  double x;
}; 

Furthermore, you could forward declare Bar as class Bar or struct Bar interchangeably.

juanchopanza
  • 223,364
  • 34
  • 402
  • 480
1

There's no difference aside from default access (struct => public, class => private). For readability, I prefer using struct when I'm defining a plain-old C struct (just data), or when the majority of my members/methods are public.

bstamour
  • 7,746
  • 1
  • 26
  • 39
1

I think of struct as a record. They bundle together variables and you want to access and modify struct members without indirection, such as a function call. For example, when you want to write together groups of data items to dump them into a file or send them over network then using class may even make the code harder to read and understand.

perreal
  • 94,503
  • 21
  • 155
  • 181
0

It might be more suitable when it's Plain Old Data without any functionality on it. In C++, the only difference between class and struct is that struct members are public by default, as opposed to private for class.

icktoofay
  • 126,289
  • 21
  • 250
  • 231