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: