Подтвердить что ты не робот

Структура C и структура С++

Может кто-нибудь, пожалуйста, скажите мне, в чем основное отличие между структурами C и С++.

4b9b3361

Ответ 1

В С++ struct и class - это то же самое, за исключением того, что для этой структуры по умолчанию используется значение public видимости и класса по умолчанию private visiblity.

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

Язык программирования C также не поддерживает ограничения видимости, функции-члены или наследование.

Ответ 2

В С++ структуры ведут себя как классы, позволяя методы, конструкторы, деструкторы и т.д.

Основное различие между классами и структурами С++ состоит в том, что все внутренние структуры по умолчанию общедоступны, а все внутренние классы по умолчанию являются закрытыми. (т.е. ничто снаружи не может получить к ним доступ напрямую)

Ответ 3

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

Ответ 4

C: мы не можем определить функцию внутри структуры в c.

С++: мы можем определить функцию внутри структуры в С++.

Ответ 5

Структуры

C более похожи на определение составной структуры данных

Структуры C++ можно рассматривать как класс, но область всех переменных-членов по умолчанию считается публичной.

Ответ 6

В структуре C и С++ существует несколько отличий

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

  • В C нет функции внутри структуры, тогда как в С++ мы можем определить функцию, которая может напрямую обращаться к элементам данных структуры (функция - это имена как метод в С++)

  • В C не существует понятия модификатора доступа внутри C, а в С++ мы можем найти модификатор доступа (например, private и public). По умолчанию все являются общедоступными.

  • Структура в C не может содержать статические элементы, тогда как в структуре С++ могут быть статические члены.

  • Размер пустой структуры - это ограничение ограничений в C, но он всегда равен 1 в С++.

  • Мы можем иметь как указатели, так и ссылки на struct в С++, но допускаются только указатели на структуры. (Ссылки не относятся к языку C)