Понятие структуры в C++ аналогично понятию класса, за исключением того, что если в классе все члены по умолчанию считаются закрытыми, то в структуре они по умолчанию открыты. Других отличий между классами и структурами нет.
Объявляются структуры с помощью ключевого слова struct. Например:
#include <iostream>
using namespace std;
struct CPU {
char Architecture[20]; // Микроархитектура
char Manufacturer[50]; // Производитель
char Model[30]; // Модель
unsigned int Frequency; // Частота, Мгц
unsigned short Cores; // Число ядер
unsigned short MFS; // Техпроцесс, нм
};
void main()
{
CPU i7;
strcpy(i7.Architecture, "Nehalem");
strcpy(i7.Manufacturer, "Intel");
strcpy(i7.Model, "Core i7-860");
i7.Frequency = 2800;
i7.Cores = 4;
i7.MFS = 45;
system("Pause");
}
Как видно из примера, работа со структурой ничем не отличается от работы с классом. При объявлении структуры так же создается абстрактный тип данных, для использования которого объявляются переменные такого типа – объекты.
В отличие от класса члены структуры по умолчанию открыты и в приведённом примере для доступа к ним извне не требуется использовать спецификатор public.
Наличие двух настолько похожих средств языка, как структуры и классы, объясняется тем, что структуры в C++ унаследованы от языка C, в котором не существует понятия открытых и закрытых членов (т.е. все члены структур открыты). Поскольку при разработке C++ значительное внимание уделялось его совместимости с C, то структуры были реализованы так, чтобы их можно было переносить из C-программ в программы на C++ без изменений.
Хотя в C++ структуры полностью поддерживают возможности объектно-ориентированного программирования, их рекомендуется использовать в стиле C – то есть в качестве записей, объединяющих различные поля в одном типе данных. Если кроме полей в этот же тип нужно включить функции по обработке данных (методы), то желательно использовать класс, а не структуру.