В C++ класс - это абстрактный тип данных, в котором объединяются все свойства объектов. Так же, как и в других языках программирования, формат описания класса имеет вид:

Пример 1
сlass имя_класса 
{
...
[private:]
//описание скрытых компонентов класса
[protected:]
//описание защищенных компонентов класса
public:
//описание доступных компонентов класса
};
В качестве компонентов класса фигурируют поля. Внутренние компоненты класса (private) доступны только компонентам функций того же класса и функциям, объявленным «дружественными» описываемому классу.
Компоненты класса, объявленные как защищенные (protected), называются защищенными. Они доступны функциям не только данного класса, но и его потомкам. При отсутствии наследования интерпретируются как внутренние.
Компоненты, объявленные в public называются общими. Они доступны за пределами данного класса в любом месте программы. Именно в этой секции осуществляются объявления полей и методов интерфейсной части класса. Если при описании секции класса тип доступа к компонент не указан, то по умолчанию присваивается тип private. Поля класса всегда описываются внутри класса. Методы могут быть описаны как внутри определения класса, так и вне него. В последнем случае определение класса должно содержать прототип этих функций. А заголовки функций должны содержать описатель видимости “::” (::private). Таким образом компилятору сообщается, что определенные функции доступны внутри поля класса.
Формат описания функций:

<тип функции> <имя класса>::<имя функции>(параметры)
{
<тело функции>
}

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

Пример 2
Пример класса, моделирующего персонажа компьютерной игры:

class monstr
{
  int health, ammo;

public:
  monstr(int he = 100, int am = 10)
  {
    health = he;
    ammo = am;  
  }
  void draw(int x, int y, int sale, int position);
  int get_health() {return health;}
  int get_ammo() {return ammo;}
};

Определение класса может размещаться перед текстом программы, а может помещаться в отдельный файл, который подключается к программе при описании объектов этого класса с помощью директивы компилятора #include. Если файл находится в каталогах автоматического поиска, то #include<имя файла>.