Рекомендуем, 2024

Выбор редакции

Разница между структурой и классом

И структура, и класс предоставляют способ создания настраиваемого типа данных, который можно использовать в дальнейшем для создания экземпляров. C ++ расширяет роль структуры для создания класса. И структура, и класс похожи во всех отношениях, за исключением того, что структура по умолчанию имеет всех своих членов как «public», а класс по умолчанию имеет всех своих членов «private». Давайте изучим разницу между структурой и классом, используя сравнительную таблицу.

Сравнительная таблица

Основа для сравненияСоставУчебный класс
основнойЕсли спецификатор доступа не объявлен, по умолчанию все члены являются «публичными».Если спецификатор доступа не объявлен, по умолчанию все члены являются «частными».
декларацияstruct имя_структуры {
тип struct_element 1;
тип struct_element 2;
тип struct_element 3;
,
,
,
};
class class_name {
элемент данных;
функция-член;
};
ПримерЭкземпляр «структура» называется «структурная переменная».Экземпляр класса называется объектом.

Определение структуры

Структура - это набор переменных разнородных типов данных, на которые ссылается одно имя. Объявление структуры формирует шаблон, который используется для создания экземпляра структуры. Структура объявлена ​​следующим образом.

 struct sname {type struct_element1; тип struct_element2; тип struct_element3;, , , } переменная1, переменная2, ., . 

Ключевое слово struct определяет компилятору, что структура объявляется. «Имя» представляет имя, данное структуре. Декларация структуры всегда заканчивается точкой с запятой, так как она считается оператором. Вы можете объявить экземпляры структуры до ее завершения, как это сделано в приведенном выше коде (variable1, variable2), или вы можете объявить экземпляр структуры в main (), написав имя экземпляра, которому предшествует имя структуры.

 // пример. main () {имя S1, S2; } 

Здесь S1 и S2 являются экземплярами структуры. Экземпляры структуры называются «структурной переменной». Элемент, объявленный внутри тела структуры, может быть доступен через переменные структуры с помощью оператора точки (.).

 // пример S1. struct_element1; 
  • Массив структуры также может быть создан, для этого вам сначала нужно объявить структуру, а затем объявить массив этого типа.
 // пример структуры sname sarray [10]; 

Выше оператор создает массив с именем 'sarray', содержащий десять переменных, и каждая переменная организована, как определено в 'sname'.

  • Вы можете передать элемент структуры функции и передать всю структуру функции.
  • Например, целочисленный указатель, указатель массива, указатель на структуру также можно объявить, поместив '*' в начале имени структурных переменных.
 // образец struct sname * S1; 

Замечания:

Элементы «структуры» хранятся в непрерывной ячейке памяти.

Определение класса

Класс в ООП определяет новый тип, который содержит члены данных и функцию-член, которые используются для доступа к членам данных класса. Экземпляры классов называются «объектами», каждый из которых имеет ту же организацию, что и класс. Класс является логической абстракцией, тогда как объект имеет физическое существование. Класс синтаксически похож на структуру. Класс может быть объявлен следующим образом.

 class class_name {закрытые данные членов и функций-членов. спецификатор доступа тип data_member; тип mem_funct (список параметров) {., }} список объектов; 

Здесь класс является ключевым словом, которое объявляет компилятору, что класс был объявлен. Основной особенностью ООП является сокрытие данных, которое достигается путем предоставления трех спецификаторов доступа, которые являются «общедоступными», «частными» и «защищенными». Если вы не укажете какой-либо спецификатор доступа в классе при объявлении членов-данных или функций-членов, по умолчанию все будут считаться закрытыми. Спецификатор общедоступного доступа позволяет другим функциям вашей программы получать доступ к функциям или данным. Доступ к закрытым членам класса может получить только член этого класса. Спецификатор защищенного доступа применяется во время наследования. После того, как вы объявите спецификатор доступа, он не может быть изменен во всей программе.

Объекты - это не что иное, как экземпляр классов. Доступ к членам класса осуществляется объектом того же класса с использованием оператора точки (.).

 //object.mem_funct (arguments); 
  • Объект также может быть передан в качестве аргумента функции.
  • Указатель на объект также может быть создан.

Ключевые различия между структурой и классом

  1. Основное различие между структурами и классами состоит в том, что по умолчанию все члены структуры являются открытыми, тогда как по умолчанию все члены класса являются частными.

сходства:

  • В C ++ и структура, и класс синтаксически эквивалентны.
  • И структура, и класс могут объявить некоторых своих членов закрытыми.
  • Имя структуры или класса может использоваться как отдельный тип.
  • И структура, и класс поддерживают механизм наследования.

Заключение:

Структура в C имела некоторые ограничения, так как структура не позволяет скрывать данные, тип данных struct не может быть обработан как встроенные типы, структуры не поддерживают наследование. Структура в C ++ преодолела эти ограничения. В C ++ классы являются расширенной версией структуры. Программисту легко использовать класс для хранения данных и функции, а также структуру только для хранения данных.

Top