Latest web development tutorials

C ++ класс хранения

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

  • автоматический
  • регистр
  • статический
  • внешний
  • изменчивый

Класс автоматического хранения

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

{
   int mount;
   auto int month;
}

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

зарегистрировать класс хранения

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

{
   register int  miles;
}

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

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

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

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

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

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

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

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

Экстерн класс хранения

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

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

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

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

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

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

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl;
}

Здесь, второй файлЭкстерниспользуется ключевое слово , чтобы объявить первый отсчет был определен в файле main.cpp в. Теперь, скомпилировать оба файла, следующим образом:

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

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

$ ./write
Count is 5

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

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