Конструктор (обектно ориентирано програмиране): Разлика между версии
Нова страница: В обектно-ориентираното програмиране '''конструкторът''' … |
(Няма разлика)
|
Версия от 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.