Difference Between Structure and Class in C++
Last Updated :
01 Oct, 2025
In C++, a structure works the same way as a class, except for the difference that members of a class are private by default and members of a structure are public by default.
For example, program 1 fails in compilation but program 2 works fine,
Program 1
C++
// C++ Program to demonstrate that
// Members of a class are private
// by default
#include <iostream>
using namespace std;
class Test {
// x is private
int x;
};
int main() {
Test t;
// compiler error because x
// is private
t.x = 20;
return t.x;
}
Output:
./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp: In function 'int main()':
./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:10:9: error: 'int Test::x' is private
int x;
^
./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:18:7: error: within this context
t.x = 20;
^
./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:10:9: error: 'int Test::x' is private
int x;
^
./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:20:14: error: within this context
return t.x;
^Program 2:
C++
// C++ Program to demonstrate that
// members of a structure are public
// by default
#include <iostream>
using namespace std;
struct Test {
// x is public
int x;
};
int main()
{
Test t;
t.x = 20;
// works fine because x is public
cout << t.x;
}
There is no other difference as structures support all features of a class like member methods, inheritance and virtual functions. The following is a summary of differences
S. No. | Class | Structure |
|---|
1 | Members of a class are private by default. | Members of a structure are public by default. |
|---|
2 | It is declared using the class keyword. | It is declared using the struct keyword. |
|---|
3 | It is normally used for Object Oriented Programming. | It also allows almost all features of a class, but is normally used for the grouping of different datatypes. |
|---|
To know about the Difference between C structures and C++ structures refer to this article.
Explore
C++ Basics
Core Concepts
OOP in C++
Standard Template Library(STL)
Practice & Problems