Базови класове

Класът е механизъм, който се използва за създаване на обекти. Като такъв, класът е в основата на много функционални възможности. Един клас се декларира чрез ключовата дума 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.
© Copyrigt 2006 UTC. All rights reserved.