Базови класове
Класът е механизъм, който се използва за създаване на обекти. Като такъв, класът е в основата на много
функционални възможности. Един клас се декларира чрез ключовата дума class последвана от името на класа и
декларация на компонентите на класа, заградени във фигурни скоби. След затварящата фигурна скоба се поставя
точка и запетая.
Общ вид на декларацията е:
class име_на _клас
{
//Компоненти на класа
}обекти_на_класа;
Компоненти на класа могат да бъдат променливи, указатели, структури, обединения, масиви, обекти на друг клас и
функции, наречени член-функции или методи на класа.
Декларацията на компонентите на клас могат да бъдат три раздела:
Private - компонентите са достъпни само за другите членове на този клас;
Public - всички компоненти на класа са достъпни за други членове на този клас, както и от всяка друга част от
програмата, която съдържа този клас;
Protected - на компоненти на класа е разрешен външен достъп само за наследниците на класа;
Ако не е зададено име на раздел се подразбира private.
Функциите и променливите, които са декларирани в рамките на един клас се наричат членове на този клас.
Член-функциите на един клас се декларират в него със своите прототипи. За да се дефинира дадена член-функция,
трябва да се свърже типа на класа с името на функцията с двойно двоеточие.
Пример за дефиниране на функция:
void myclass :: set_a(int num)
{
a=num;
}
int myclass :: get_a()
{
return a;
}
Пример за декларация на два обекта от тип myclass:
myclass ob1, ob2;
След като веднъж е бил създаден обект от клас, програмата може да се обръща към неговите public членове
посредством оператора . (точка).
ob1.set_a(10); // задава на а от ob1 стойност 10
ob2.set_a(99); // задава на а от ob2 стойност 99
Всеки обект от даден клас притежава свое собствено копие от всяка променлива, декларирана в този клас.
Горният израз показва как на копието на ob1 се задава стойност 10, а на копието на ob2 стойност 99. Това
означава, че а от ob1 е различно от а от ob2.
Конструктори и деструктори на базови класове
Създаването на обекти е свързано с отделяне на памет, запомняне на текущо състояние, задаване на начални
стойности и др.дейности, които се наричат инициализиране на обекта. В езика на C++ тези дейности се изпълняват
от специален вид член-функция на класовете - конструкторите.
Декларация на конструктор:
Име_на_клас :: име_на_клас (параметри)
{
// тяло
}
където параметрите се определят като формални параметри на функция, а тялото е редица от оператори и дефиниции.
Конструкторът е член-функция, която притежава повечето характеристики на другите член-функции, но
има и редица особености, като:
- - името на конструктора съвпада с името на класа;
- - изпълнява се автоматично при създаване на обекти;
- - не може да се извиква явно.
В един клас може да се дефинирани няколко конструктора. Всички те имат едно и също име (името на класа),
но трябва да се различават по броя и/или типа на параметрите си. При създаване на обект на клас се изпълнява
само един от тях. Определя се съгласно критерия за най-добро съвпадение.
Разрушаването на обекти на класове в някои случаи е свързано с извършване на определени действия,
които наричат заключителни. Тези действия са свързани с освобождаването на заделена памет, възтановяване на
състояние на програмата и др. Ефектът на заключителните действия е противоположен на ефектът на инициализация.
Това се осъществява чрез деструкторите. Деструкторът е член-функция, която се извиква при унищожаване на даден
обект.
Един клас може да има явно дефиниран точно един деструктор. Името му съвпада с името на класа,
предшестван от '~' .
Пример:
myclass(); // Конструктор
~myclass(); // Деструктор
Конструкторите и деструкторите се декларират ВИНАГИ в раздела public.
|