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

Классы хранения в C++

Класс хранения определяет область действия (видимость) и время жизни переменных и/или функций в программе C++. Эти спецификаторы предшествуют типу, который они модифицируют. Существуют следующие классы хранения, которые можно использовать в программе на C++

Автоматический класс хранения

авто класс хранения — это класс хранения по умолчанию для всех локальных переменных.

{
   int mount;
   auto int month;
}

В приведенном выше примере определены две переменные с одним и тем же классом хранения, auto можно использовать только внутри функций, т. е. локальных переменных.

Класс хранения регистра

Реестр Класс хранения используется для определения локальных переменных, которые должны храниться в регистре, а не в ОЗУ. Это означает, что переменная имеет максимальный размер, равный размеру регистра (обычно одно слово), и к ней нельзя применить унарный оператор '&' (поскольку у нее нет ячейки памяти).

{
   register int  miles;
}

Регистр следует использовать только для переменных, требующих быстрого доступа, таких как счетчики. Следует также отметить, что определение «регистра» не означает, что переменная будет храниться в регистре. Это означает, что он МОЖЕТ храниться в регистре в зависимости от ограничений аппаратного обеспечения и реализации.

Статический класс хранения

статический Storage указывает компилятору сохранять существование локальной переменной в течение всего времени жизни программы вместо того, чтобы создавать и уничтожать ее каждый раз, когда она попадает в область видимости и выходит из нее. Следовательно, если сделать локальные переменные статическими, они смогут сохранять свои значения между вызовами функций.

Модификатор static также можно применять к глобальным переменным. Когда это делается, область действия этой переменной ограничивается файлом, в котором она объявлена.

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

Живая демонстрация
#include <iostream>
 
// Function declaration
void func(void);
 
static int count = 10; /* Global variable */
 
main() {
   while(count--) {
      func();
   }
   
   return 0;
}

// Function definition
void func( void ) {
   static int i = 5; // local static variable
   i++;
   std::cout << "i is " << i ;
   std::cout << " and count is " << count << std::endl;
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

i is 6 and count is 9
i is 7 and count is 8
i is 8 and count is 7
i is 9 and count is 6
i is 10 and count is 5
i is 11 and count is 4
i is 12 and count is 3
i is 13 and count is 2
i is 14 and count is 1
i is 15 and count is 0

Внешний класс хранения

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

Когда у вас есть несколько файлов и вы определяете глобальную переменную или функцию, которая будет использоваться и в других файлах, тогда extern будет использоваться в другом файле для ссылки на определенную переменную или функцию. Просто для понимания extern используется для объявления глобальной переменной или функции в другом файле.

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

Первый файл:main.cpp

#include <iostream>
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

Второй файл:support.cpp

#include <iostream>

extern int count;

void write_extern(void) {
   std::cout << "Count is " << count << std::endl;
}

Здесь внешний ключевое слово используется для объявления счетчика в другом файле. Теперь скомпилируйте эти два файла следующим образом —

$g++ main.cpp support.cpp -o write

Это произведет запись исполняемая программа, попробуйте выполнить написать и проверьте результат следующим образом —

$./write
5

Изменяемый класс хранения

изменяемый спецификатор применяется только к объектам класса, которые обсуждаются далее в этом руководстве. Он позволяет члену объекта переопределять константную функцию-член. То есть изменяемый член может быть изменен константной функцией-членом.


Язык C

  1. Операторы С++
  2. Классы и объекты С++
  3. Дружественные функции C++ и дружественные классы
  4. Шаблоны классов С++
  5. Класс хранения C
  6. C — Классы хранения
  7. Полиморфизм в С++
  8. Абстракция данных в C++
  9. Инкапсуляция данных в C++
  10. Интерфейсы в C++ (абстрактные классы)