Difference Between C Structures and C++ Structures

Difference Between C Structure and C++ Structure

  • What is the difference between C structures and C++ structures?
  • Comparison chart of C structures vs C++ structures?
  • Can I define a function in a struct?
  • Is it possible to set default values for C struct members?
  • Do C structures support access modifiers?
  • C structures vs C++ structures
  • Can we declare a function inside the structure of C programming?

If you are asking any of the above questions, well you have come to the right place. In this tutorial, you will learn the difference between C structures and C++ structures. First, let’s see the comparison chart for C and C++ structures, then I will discuss the difference with some programming examples.

Differences Between the C Structures and C++ Structures:

The following comparison chart explains the difference between C structures and C++ structures.

C Structures C++ Structures
Only data members are allowed, it cannot have member functions. Can hold both: member functions and data members.
We can not assign a default value to the members. We can assign the default value to the members.
C structures cannot have static members. It can have static members.
It cannot have constructors and destructors inside a structure. Constructor and destructors creation is allowed.
Direct Initialization of data members is not possible. Direct Initialization of data members is possible.
Writing the ‘struct’ keyword is necessary to declare structure-type variables. Writing the ‘struct’ keyword is not necessary to declare structure-type variables.
Does not have access modifiers. It supports access modifiers.
Does not support inheritance. It supports inheritance.
Sizeof operator will generate 0  for an empty structure. Sizeof operator will generate 1 for an empty structure.
Data Hiding is not possible. Data Hiding is possible.

 

The above comparison chart is for a quick summary of the differences between C and C++ structures. Now let’s see some important differences with programming examples.

1. Member functions ( function inside the structure):

In C: NO

We can not create a function using the structure. If you will try to implement the function in C structures, you will get the compiler error.

struct A
{
    //member function
    void foo() //<---- compiler error
    {

    }
};

 

In C++: Yes

We can create a member function in C++ structures like the class.

struct A
{
    //member function
    void foo()
    {

    }
};

 

 

2. Default values to member variable:

In C: No

It is not possible to assign a default value to the structure attribute.

struct A
{
    //member variable
    int data = 7; //<--- compiler error
};

The structure is a data type. You don’t give values to a data type. You give values to variables of data types. See the below example,

#include<stdio.h>

struct A
{
    //member variable
    int data;
};

int main()
{
    //_A is structure variable
    struct A _A = {5};

    printf("_A.data = %d\n", _A.data);

    return 0;
}

Output: _A.data = 5

 

In C++: Yes

Yes, we can assign the default value.

struct A
{
    //member variable
    int data = 7;
};

 

3. static members variables:

In C: No

It is not possible to create a static member variable in C.

struct A
{
    //member variable
    static int data; //<--- compiler error
};

 

In C++: Yes

Yes, we can create a static member variable in C++.

struct A
{
    //member variable
    static int data;
};

 

4. Instantiation:

In C during instantiation, we have to use the struct keyword whereas in C++ we don’t need to use the struct keyword.

In C:

#include<stdio.h>

struct A
{
    //member variable
    int data1;
    int data2;
};


int main()
{
    struct A sData = {27, 24};

    printf("%d %d", sData.data1,sData.data2);

    return 0;
}

Output: 27 24

 

In C++:

#include<stdio.h>

struct A
{
    //member variable
    int data1;
    int data2;
};


int main()
{
    /*Not necessary to use struct
    keyword*/
    A sData = {27, 24};
    printf("%d %d", sData.data1,sData.data2);

    return 0;
}

Output: 27 24

 

5. Constructor and Destructor:

In C: Not possible.

In C we can not create a constructor inside a structure.

#include<stdio.h>

struct A
{
    A() //<--- compiler error
    {

    }
};


int main()
{
    return 0;
}

 

In C++: Yes possible.

We can create a constructor inside a structure in C++.

#include<stdio.h>

struct A
{
    A()
    {

    }
};


int main()
{
    return 0;
}

 

6. Access modifiers:

C++ structures have access modifiers but C structures do not have these modifiers. C++ has three access modifiers, public, private, and protected.

 

7. sizeof():

A sizeof operator will give 0 for an empty structure in C whereas 1 for an empty structure in C++.

In C:

#include<stdio.h>

struct A
{
//empty struct
};

int main()
{
    printf("%d", sizeof(struct A));

    return 0;
}

Output: 0

 

In C++:

#include<iostream>

struct A
{
 //empty struct
};

int main()
{
    std::cout << sizeof(A);

    return 0;
}

Output: 1

 

8. Inheritance and data hiding:

C structures do not support inheritance and data hiding because C is not an object-oriented language.

 

Recommended Articles for you: