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