Classes and Structures in C++

In C, a structure (struct) gives us the ability to organize similar data together.
You may wonder what I said. It is so in C, this is because structure is one
of the few things which is more or less entirely different in the two languages
(C and C++).


In C++, the role of structures is elevated so much as to be same as that of
a class. In C, structure could only include data as variables and arrays but
in C++ they can also include functions, constructors, destructors etc. and in
fact everything else that a class can. Knowing this, it wouldn’t be wrong
to say that in C++, structures are an alternate way of defining a class. However
there are some differences.


Look at the following code:



// First difference between a class
// and a structure in C++

// define a structure
struct mystruct
{
char name[25];
int id_no;
};

void main()
{
mystruct a;
// in C, it is necessary to
// include the struct keyword

// Example:
// struct mystruct a;

...
...
...
}



In C, we must declare an object of a structure by using the keyword struct but
in C++ it is optional to do so (just like a class).


Another difference is the fact that all the data or functions inside a struct
are public by default contrary to a class, inside which scope is private by
default.


It is obvious from the following code:



// Second difference between a class
// and a structure in C++

// define a structure
struct mystruct
{
// public by default
// So convenient to start with
// public declarations

void func1();
void func2();
...
...

private:
// now private
int data1;
int data2;
...
...
};

// define a class
class myclass
{
// private by default
int data1;
int data2;
...
...

public:
// now public
void func1();
void func2();
...
...
};


While you’ve got the power, you should not define a class as a struct
since it is not a good practice. Structures and classes should be used as per
their original purposes to avoid unnecessary complications and misunderstandings.


Related Articles:


Check out this stream