Обекти
Дефиницията на класа може да се разглежда като шаблон, по който се създават обекти. Дефинирането на клас създава нов тип в областта на видимост, в която е направена дефиницията. За да се дефинира обект от даден клас, трябва да се дефинира променлива от съответния тип.
Point p; Point* ptr=&p; Point& ref=p;
При дефиниране на променлива от типа на даден клас се създава обект (екземпляр, инстанция) от класа. Всеки обект притежава собствено копие на член-променливите на класа. При създаването на обект се създават и екземпляри на всички член-променливи на класа, които стават „собственост“ на създадения обект.
За разлика от член-променливите, всички обекти си поделят само едно копие на член-функциите на класа. Независимо от броя на обектите в програмата има само едно копие на член-функциите на класа.
Нека като пример разгледаме класа Point
дефиниран по следния начин:
class Point { double x_, y_; public: void set_x(double x) { x_=x; } double get_x(void) { return x_; } };
Нека са дефинирани два обекта p1
и p2
от типа Point
. Всеки от тези обекти притежава собствено копие от нестатичните член-променливи x_
и y_
.
int main() { Point p1, p2; p1.set_x(10); p2.set_x(20); p1.get_x(); p2.get_x(); ... }
Когато методът get_x()
се извиква чрез обекта p1
, то използваната в метода член-променлива x_
принадлежи на обекта p1
(вж. ред 4).Когато методът get_x()
се извиква чрез обекта p2
, то използваната в метода член-променлива x_
принадлежи на обекта p2
(вж. ред 5). Като се използва методът set_x()
се модифицира стойността на член-променливата x_
за съответния обект – в ред 2 член-променливата x_
на обекта p1
получава стойност 10
, а в ред 3 член-променливата x_
на обекта p2
получава стойност 20
.
Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране
Pingback: CPP-101: Обработка на изключения | Записки по програмиране