Google
 

Wednesday, February 20, 2008

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.

No comments: