Nothing Special   »   [go: up one dir, main page]

Open In App

Difference Between Structure and Class in C++

Last Updated : 11 Oct, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

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++. The C++ Course explains these concepts in detail, helping you choose the appropriate data structure for your needs. 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:

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

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:

C++
// 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++
// 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.



Next Article

Similar Reads

Practice Tags :
three90RightbarBannerImg