Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Структуры и классы в C ++

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

Структуры в C

Структура в C - это настраиваемый составной элемент данных (объект), который может быть построен из существующих встроенных типов данных ( int , символ и т. д.), битовые поля (целые числа указанного размера в битах) и другие структуры. Идея состоит в том, чтобы агрегировать несколько элементов данных, которые принадлежат друг другу. Например, структура для хранения трехмерных координат может выглядеть следующим образом:

 координаты структуры {float x; float y; float z;}; 

Этот код сообщает компилятору, какие координаты структуры похоже. Затем вы можете объявить переменные этого типа следующим образом:

 расположение координат структуры; 

Переменная местоположение имеет тип структурные координаты и его внутренние поля могут быть адресованы с помощью оператора «точка»:

 location.x =1.0; location.y =2.0; location.z =9.99; 

Конечно, аналогичного эффекта можно было бы добиться, используя три отдельных поплавка переменные с именами типа location_x и т. д. Однако с местоположением справиться гораздо проще. как единую переменную, которую можно передавать функциям и т. д.

Возможность включения битовых полей дает структурам возможность, недоступную где-либо еще в C. Вот пример:

 struct bitreg {без знака:3; без знака вниз:3; беззнаковая полярность:2;}; 

Каждое из полей в переменной типа struct bitreg имеет определенный размер в битах. Компилятор обеспечивает разумное хранение данных, поэтому мы ожидаем, что такая переменная уместится в один байт. Более того, весь «битовый» код для доступа к полям внутри байта генерируется автоматически. Итак, программист может просто получить к ним доступ следующим образом:

 struct bitreg control; control.up =1; control.down =2; control.polarity =3; 

По большей части использование структур в C довольно просто и упрощает понимание кода, не влияя на эффективность выполнения. Однако есть два момента, о которых следует знать разработчикам встраиваемых систем:

Хотя структура C выглядит как новый тип данных, на самом деле это не так. Тип данных обычно имеет ряд операций, которые могут быть выполнены с ним; это не относится к структуре C. Чтобы сделать что-либо со структурой C, кроме создания указателя на нее, вам необходимо получить доступ к внутренним полям. Этот вопрос решается на C ++.

Классы C ++

Язык C ++ имеет ряд объектно-ориентированных возможностей. Одним из них является концепция класса . , что позволяет описывать что-то более похожее на новый тип данных. Переменная (обычно называется объектом ) может быть создан из класса; т.е. это объект этого нового типа.

Класс C ++ имеет почти тот же синтаксис, что и структура C, и некоторые очень похожие возможности. Однако есть несколько важных отличий:

Большинство из этих функций проиллюстрировано в этом примере:

 класс myclass {char a; int b; общедоступные:void fun (); мои занятия(); ~ myclass ();}; myclass myobj; myobj.fun (); 

Переменные-члены a и b доступны только для трех функций-членов fun () , myclass () и ~ myclass () . Последние две функции - это конструктор и деструктор. Только веселье () скорее всего будет вызван кодом пользователя. Фактический код для всех трех функций будет определен в другом месте, связанном с классом с помощью :: оператор, таким образом:

 void myclass ::fun () {... 

Структуры в C ++

В дополнение к классам в C ++ есть структуры, обратно совместимые с C. Однако структура C ++ также имеет те же дополнительные возможности, которыми обладают классы. Это всего лишь одно различие между структурой и классом в C ++. Как мы видели, доступность по умолчанию для переменных-членов и функций в классе является частной; по умолчанию структура является общедоступной. Таким образом, функциональность более раннего класса также может быть выражена следующим образом:

 struct mystruct {void fun (); мои занятия(); ~ myclass (); частный:char a; int b;}; 

Использование классов и структур в C ++

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

Ключевым приоритетом при написании кода является обеспечение его читабельности (=поддерживаемости). Кто-то - это может быть вы - может через год взглянуть на этот код и понять, что он делает. Несколько советов:предположите, что человек, который будет поддерживать ваш код, является вооруженным психопатом, который имеет ограниченное терпение и знает ваш домашний адрес.


Встроенный

  1. Переменные C++, литералы и константы
  2. Классы и объекты С++
  3. Управление памятью C++:создание и удаление
  4. Публичное, защищенное и частное наследование C++
  5. Семафоры:служебные службы и структуры данных
  6. Группы флагов событий:служебные службы и структуры данных
  7. Java — объект и классы
  8. Классы хранения в C++
  9. Дата и время С++
  10. Структуры данных С++