Конструктор (обектно ориентирано програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Mishobg12 (беседа | приноси)
Нова страница: В обектно-ориентираното програмиране '''конструкторът''' …
(Няма разлика)

Версия от 18:27, 12 април 2009

В обектно-ориентираното програмиране конструкторът е блок от инструкции, който се изпълнява за инициализация на един обект при неговото създаване. Практически конструкторът може да извършва всякакъв вид действия, но ако не друго, то е поне признак за много лош стил на програмиране да се изполва за действия, които не засягат пряко създавания обект, тъй като това може да доведе до неочаквани грешки, особено в големи програми. В езика за програмиране C++ конструкторът се представя като член-функция на един обект, носеща същото име като него. Тя и деструктора) са единствения тип дефиници на функции, за които не се дефинира тип на връщания резултат. В тази статия примерите са дадени на този език.

Елементарна дефиниция на обект с конструктор

#include <iostream>
using namespace std;
class x {
   int id;
public:
   x();
   void hey(); //Прототип на конструктора
} y; 

x::x()
{
   id = 1;
}

void x::hey() //Дефиниция на конструктора
{
   cout << "This is object " << id << " speaking!" << endl;
}

int main()
{
   y.hey();
}

Това ще изпише:

This is object 1 speaking!

При инициализацията на обект y на id се задава стойност 1. При извикването на функцията y.hey() на екрана се изписва съдържанието на id оградено от низовете "This is object " и " speaking!".

Конструктори с аргументи

Функцията-конструктор може да приеме аргументи, като така всеки обект може да бъде инициализиран с индивидуални стойности:

#include <iostream>
using namespace std;
class x {
   int id;
public:
   x(int ident);
   void hey();
} y(1), z(2);
 
x::x(int ident)
{
   id = ident;
}
 
void x::hey()
{
   cout << "This is object " << id << " speaking!" << endl;
}
 
int main()
{
   y.hey();
   z.hey();
}

Това ще изпише:

This is object 1 speaking!

This is object 2 speaking!

Тази програма съдържа два обекта от клас x - y и z. Конструктурът приема стойност 1 при първия, и стойност 2 при втория, което записва в променливата id на y стойност 1, а в променливата id на z - 2.