Голямата тройка (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;
}
//...