Skip to content
Related Articles

Related Articles

Structure vs class in C++

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 08 Aug, 2022

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.

Class

Structure

Members of a class are private by default.Members of a structure are public by default. 
Member classes/structures of a class are private by default.Member classes/structures of a structure are public by default.
It is declared using the class keyword.It is declared using the struct keyword.
It is normally used for data abstraction and further inheritance.It is normally used for the grouping of data

Some examples that elaborate on these differences:

1) 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++




// Program 1
// C++ Program to demonstrate that
// Members of a class are private
// by default
using namespace std;
 
class Test {
    // x is private
    int x;
};
 
int main()
{
    Test t;
    t.x = 20; // compiler error because x
              // is private
   
    return t.x;
}

 
 Output:

prog.cpp: In function ‘int main()’:
prog.cpp:8:9: error: ‘int Test::x’ is private
    int x;
        ^
prog.cpp:13:7: error: within this context
    t.x = 20;
      ^

Program 2: 

C++




// Program 2
// C++ Program to demonstrate that
// members of a structure are public
// by default.
#include <iostream>
 
struct Test {
    // x is public
    int x;
};
 
int main()
{
    Test t;
    t.x = 20;
   
    // works fine because x is public
    std::cout << t.x;
}

Output

20

2) 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;
};

3) Inheritance is possible with classes, and with structures.

For example, programs 3 and 4 work fine.

Program 3:

C++




// Program 3
// C++ program to demonstrate
// inheritance with classes.
#include <iostream>
using namespace std;
 
// Base class
class Parent {
public:
    int x;
};
 
// Subclass inheriting from
// base class (Parent).
class Child : public Parent {
public:
    int y;
};
 
int main()
{
    Child obj1;
   
    // An object of class Child has
    // all data members and member
    // functions of class Parent.
    obj1.y = 7;
    obj1.x = 91;
    cout << obj1.y << endl;
    cout << obj1.x << endl;
 
    return 0;
}

Output

7
91

Program 4:

C++




// 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

Must Read: 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. 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!