Классы против структуры против союза в C ++

Опубликовано: 30 Ноября, 2021

Класс : это определяемый пользователем тип данных, содержащий переменные и функции. Это как план объекта. Члены класса по умолчанию являются закрытыми. Например, автомобиль - это объект, его цвет, дизайн, вес - его атрибуты, а тормоз, ограничение скорости и т. Д. - его функции.

Синтаксис:

 класс <имя_класса>
{
     частный:
     // Члены данных
     ........... ...... .......
     
     общественность:
     // Члены данных
     // Функция-член
     ......... ........ ......
   
     защищено:
     // Члены данных
     // Функция-член
    ....... ....... ......
};

Ниже приведена программа на C ++ для иллюстрации класса:

C ++

// C++ program to illustrate class
#include <bits/stdc++.h>
using namespace std;
// Class with data members
// and member function
class Geeks {
public :
string geekname;
int roll_no;
// Function printName
// prints the name
void printName()
{
cout << "Geekname is: "
<< geekname;
}
// Function printRollno
// prints the roll no
void printRollno()
{
cout << "Roll no is: "
<< roll_no;
}
};
// Driver Code
int main()
{
// Object of class Geeks
Geeks obj1;
// Initialize a public data
// members of class Geeks
obj1.geekname = "Geek" ;
obj1.roll_no = 15;
// Function Call
obj1.printName();
cout << endl;
// Function Call
obj1.printRollno();
return 0;
}
Выход:
Имя компьютерщика: Компьютерщик
Число баллов: 15

Объяснение: В приведенном выше примере C ++ класс Geeks имеет элементы данных и функцию-член в спецификаторе общего доступа. Члены данных инициализируются некоторыми значениями с использованием объекта класса. С помощью объекта вызываются функции класса.

Структура : это удобный способ группировки переменных. Члены структуры по умолчанию являются общедоступными. Структуры можно использовать для эффективного повышения уровня абстракции с целью улучшения кода.

Синтаксис:

 структура <имя_структуры>
{
    // Члены данных
    ....... ...... ......
       
    // Функции-члены
    ....... ...... ......
};

Ниже приведена программа на C ++ для иллюстрации структуры:

C ++

// C++ program to illustrate structure
#include <bits/stdc++.h>
using namespace std;
// Structure with data members
// and member function
struct geekyPerson {
// Data members
string name;
int age;
float salary;
// Member function to display
void display()
{
cout << "Name: " << name
<< endl;
cout << "Age: " << age
<< endl;
cout << "Salary: " << salary;
}
};
// Driver Code
int main()
{
// Instance of the structure
geekyPerson g1;
// Accessing the data by the
// dot operator
g1.name = "Geeky" ;
g1.age = 23;
g1.salary = 15000;
// Function Call
g1.display();
return 0;
}
Выход:
Имя: Geeky
Возраст: 23 года
Заработная плата: 15000

Объяснение: Тег структуры используется перед именем структуры для определения структуры. Каждое определение члена - это обычное определение переменной, например int i; или float f; или любое другое допустимое определение переменной. С помощью объекта вызываются функции конструкции.

Союз : это определяемый пользователем тип данных. Это похоже на строения. Все данные-члены союза используют одну и ту же ячейку памяти. Размер союза зависит от размера самого большого члена союза. Чтобы использовать одну и ту же ячейку памяти для двух или более членов, лучше всего будет объединение.

Синтаксис:

 союз <union_name>
{
    // Члены данных
    ..... ....... .........
} union_variables;
 
где,
union_name - название было присвоено союзу.
union_variable - объект объединения.
Члены данных - переменные-члены.

Ниже приведена программа на C ++ для иллюстрации объединения:

C ++

// C++ program to illustrate union
#include <bits/stdc++.h>
using namespace std;
// Union declaration with the
// data members
union geeks {
int id;
int salary;
char name[30];
int age;
};
// Driver Code
int main()
{
// Instance of the union
union geeks g1;
g1.id = 1;
cout << "Id : " << g1.id
<< endl;
strcpy (g1.name, "Geeky" );
cout << "Name : " << g1.name
<< endl;
g1.salary = 35000;
cout << "Salary : " << g1.salary
<< endl;
g1.age = 25;
cout << "Age : " << g1.age
<< endl;
return 0;
}
Выход:
Id: 1
Имя: Geeky
Заработная плата: 35000
Возраст: 25

Объяснение: В объединении объекты также используются для доступа к элементам данных и функциям-членам.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .