В чем разница в C++ между структурой и классом? Насколько я понимаю, структура - это способ создания объекта в С++, точно так же, как python использует класс.
В чем разница в C++ между структурой и классом? Насколько я понимаю, структура - это способ создания объекта в С++, точно так же, как python использует класс.
Единственная разница между
class
иstruct
заключается в видимости его членов: членыstruct
по умолчанию общедоступны, а членыclass
по умолчанию закрыты.Игнорируя эту разницу, обе конструкции одинаковы:
Оба могут быть использованы в наследовании
Это означает, что они также могут иметь виртуальные функции, чисто виртуальные функции, функции переопределения и использовать любой уровень наследования.
Оба могут иметь общедоступные, защищенные и частные члены
Оба автоматически генерируют специальные функции
В обоих случаях, если он не определен явно, он будет создан автоматически:
Оба могут быть предварительно объявлены
Я хотел упомянуть этот момент, потому что можно предварительно объявить объект как,
class
а затем объявить его какstruct
(и наоборот); большинство компиляторов принимают это, хотя обычно выводят сигнал тревоги.Оба имеют одинаковую структуру в памяти
Класс и структура с одинаковыми членами в одном и том же порядке будут занимать одинаковый объем памяти и иметь одинаковые отступы между членами.
В C++
struct
иclass
практически одинаковы, с той лишь разницей, что в одномstruct
члены по умолчанию являются общедоступными, а в другомclass
— закрытыми по умолчанию.A
struct
может содержать то же, что иclass
, методы, конструкторы, деструкторы, наследование.Помимо того, что было упомянуто в других ответах на тему видимости (тема, которую я не буду комментировать, потому что она уже хорошо задокументирована в других ответах), есть второе различие между использованием
struct
иclass
и это в случае изtemplate
:class
может использоваться для объявления типов для atemplate
, аstruct
не: