Unetway

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

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

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

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

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

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

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 будут иметь собственную копию данных.

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

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

#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 указатель

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

Указатель на классы C ++

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

Статические члены класса

Оба элемента данных и члены функции класса могут быть объявлены как статические.