Open In App

Difference Between Structure and Class in C++

Last Updated : 23 Jul, 2025
Comments
Improve
Suggest changes
322 Likes
Like
Report

In C++, a structure works the same way as a class, except for just two small differences. The most important of them is hiding implementation details. A structure will by default not hide its implementation details from whoever uses it in code, while a class by default hides all its implementation details and will therefore by default prevent the programmer from accessing them. The following table summarizes all of the fundamental 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 data abstraction and inheritance.

It is normally used for the grouping of different datatypes.

4

Syntax:

class class_name {
data_member;
member_function;
};

Syntax:

struct structure_name {
structure_member1;
structure_member2;
};

Understanding the differences between structures and classes is crucial in C++. Some examples that elaborate on these differences:

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:


 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:


Output
20

A class is declared using the class keyword, and a structure is declared using the struct keyword.

Syntax:

class ClassName {
private:
member1;
member2;

public:
member3;
.
.
memberN;
};

Syntax: 

struct StructureName {
member1;
member2;
.
.
.
memberN;
};

Inheritance is possible with classes, and with structures

For example, programs 3 and 4 work fine.

Program 3:


Output
7
91

Program 4:

// C++ Program to demonstrate
// Inheritance with structures.
#include <iostream>

using namespace std;

struct Base {
public:
    int x;
};

// is equivalent to
// struct Derived : public Base {}
struct Derived : Base {
public:
    int y;
};

int main()
{
    Derived d;

    // Works fine because inheritance
    // is public.
    d.x = 20;
    cout << d.x;
    cin.get();
    return 0;
}

 
Output

20

To know about the Difference between C structures and C++ structures refer to this article.


Struct vs Class in C++
Visit Course explore course icon
Practice Tags :

Similar Reads