Structure vs class in C++

In C++, a structure is the same as a class except for a few differences. The most important of them is security. A Structure is not secure and cannot hide its implementation details from the end user while a class is secure and can hide its programming and designing details. Following are the points that expound on this difference:

1) Members of a class are private by default and members of a struct are public by default.
For example program 1 fails in compilation and program 2 works fine.

filter_none

edit
close

play_arrow

link
brightness_4
code

   
// Program 1
#include <stdio.h>
  
class Test {
    int x; // x is private
};
int main()
{
  Test t;
  t.x = 20; // compiler error because x is private
  getchar();
  return 0;
}

chevron_right


filter_none

edit
close

play_arrow

link
brightness_4
code

   
// Program 2
#include <stdio.h>
  
struct Test {
    int x; // x is public
};
int main()
{
  Test t;
  t.x = 20; // works fine because x is public
  getchar();
  return 0;
}

chevron_right


2) When deriving a struct from a class/struct, default access-specifier for a base class/struct is public. And when deriving a class, default access specifier is private.
For example program 3 fails in compilation and program 4 works fine.

filter_none

edit
close

play_arrow

link
brightness_4
code

   
// Program 3
#include <stdio.h>
  
class Base {
public:
    int x;
};
  
class Derived : Base { }; // is equilalent to class Derived : private Base {}
  
int main()
{
  Derived d;
  d.x = 20; // compiler error becuase inheritance is private
  getchar();
  return 0;
}

chevron_right


filter_none

edit
close

play_arrow

link
brightness_4
code

   
// Program 4
#include <stdio.h>
  
class Base {
public:
    int x;
};
  
struct Derived : Base { }; // is equilalent to struct Derived : public Base {}
  
int main()
{
  Derived d;
  d.x = 20; // works fine becuase inheritance is public
  getchar();
  return 0;
}

chevron_right


Related Article: Difference between C structures and C++ structures

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Improved By : roopkatha

Article Tags :
Practice Tags :


45


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.