Голямата тройка (C++)
За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна. Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел. |
Голямата тройка (известна и като Законът за голямата тройка, правилото на тройката; на английски: Rule of three) е правило в известния език за програмиране от високо ниво C++, което гласи, че при дефинирането на клас класът трябва да съдържа следните специални член-функции (методи):
- Деструктор
- Конструктор за копиране
- Предефиниране на оператора за присвояване
Тези три специални член-функции на класа се дефинират по подразбиране от компилатора, ако не са дефинирани от програмиста.
Когато в декларацията на клас има член-данни от тип указател, т.е. в програмата ще се използва динамично заделена памет, тогава Голямата тройка е задължителна. Много програмисти вместо понятието Голяма тройка използват Голяма четворка. Голямата четворка се състои от методите на Голямата тройка заедно с конструктор по подразбиране, т.е. конструктор без параметри.
Примерен вид на голямата тройка (четворка)
[редактиране | редактиране на кода]#include <iostream>
#include <string.h>
using namespace std;
class Example
{
char* ex;
public:
//...
Example (); // Конструктор по подразбиране
Example (const Example& other); // Декларация на конструктора за копиране
Example& operator =(const Example& t); // Предефиниране на =
~Example (); // Деструктор
//...
};
Example::Example()
// Дефиниция на конструктора по подразбиране
{
ex = NULL;
}
Example::Example(const Example& other)
// Дефиниция на копиращия конструктор
{
ex = new char [strlen(other.ex) + 1];
strcpy (ex, other.ex);
}
Example& Example::operator =(const Example& t)
// Предефиниране на =
{
if (this != &t)
{
delete [] ex;
ex = new char [strlen(t.ex) + 1];
strcpy (ex, t.ex);
}
return *this;
}
Example::~Example()
// Дефиниция на деструктора
{
delete [] ex;
}
//...