Может кто-нибудь, пожалуйста, скажите мне, в чем основное отличие между структурами C и С++.
Структура C и структура С++
Ответ 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)