Учебники

C ++ Классы и Объекты

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

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

Определения класса C ++

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

Определение класса начинается с ключевого слова class, за которым следует имя класса; и тело класса, заключенное в пару фигурных скобок. Определение класса должно сопровождаться точкой с запятой или списком объявлений. Например, мы определили тип данных Box, используя ключевое слово class следующим образом:

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

Ключевое слово public определяет атрибуты доступа членов класса, следующего за ним. Доступ к общедоступному члену может осуществляться вне класса в любом месте области видимости объекта класса. Вы также можете указать членов класса как частные или защищенные, что мы обсудим в подразделе.

Определить объекты C ++

Класс предоставляет чертежи для объектов, поэтому в основном объект создается из класса. Мы объявляем объекты класса точно так же, как мы объявляем переменные базовых типов. Следующие операторы объявляют два объекта класса Box —

Box Box1;          // Declare Box1 of type Box
Box Box2;          // Declare Box2 of type Box

Оба объекта Box1 и Box2 будут иметь собственную копию элементов данных.

Доступ к членам данных

Доступ к открытым данным членов объектов класса можно получить с помощью оператора прямого доступа к члену (.). Давайте попробуем следующий пример, чтобы прояснить ситуацию:

Live Demo

#include <iostream>

using namespace std;

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

int main() {
   Box Box1;        // Declare Box1 of type Box
   Box Box2;        // Declare Box2 of type Box
   double volume = 0.0;     // Store the volume of a box here
 
   // box 1 specification
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 specification
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
   
   // volume of box 1
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Volume of Box1 : " << volume <<endl;

   // volume of box 2
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Volume of Box2 : " << volume <<endl;
   return 0;
}

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

Volume of Box1 : 210
Volume of Box2 : 1560

Важно отметить, что частные и защищенные члены не могут быть доступны напрямую с помощью оператора прямого доступа (.). Мы узнаем, как получить доступ к закрытым и защищенным пользователям.

Классы и объекты в деталях

Пока у вас есть очень общее представление о C ++ классах и объектах. Существуют и другие интересные концепции, связанные с классами и объектами C ++, которые мы обсудим в различных подразделах, перечисленных ниже.

Функция-член класса — это функция, которая имеет свое определение или свой прототип в определении класса, как и любая другая переменная.

Член класса может быть определен как открытый, закрытый или защищенный. По умолчанию участники будут считаться закрытыми.

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

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

Функция друга допускает полный доступ к закрытым и защищенным членам класса.

С помощью встроенной функции компилятор пытается развернуть код в теле функции вместо вызова функции.

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

Указатель на класс выполняется точно так же, как указатель на структуру. На самом деле класс — это просто структура с функциями в нем.

И члены-данные, и члены-функции класса могут быть объявлены как статические.