Konstruktory Trywialne

W przypadku, gdy programista nie zdefiniował żadnego konstruktora kompilator generuje domyślny konstruktor dla każdej klasy/struktury. Niekiedy jednak generowanie takiego konstruktora przez kompilator jest zbędne np.:

class Pusta{};
class Test{
public:
    int a;
    char c;
};
 
int main(){
    Test t;
    Pusta p;
    t.a = 0;
    t.c = 'a';
    return 0;
}

Obiekty typu Pusta lub Test mogą zostać utworzone bez wywoływania konstruktora. O takich konstruktorach mówimy, że są trywialne, co oznaczacza, że aby utworzyć obiekt nie musimy go wywoływać. Klasa/struktura ma trywialny konstruktor jeśli wszystkie poniższe warunki są spełnione:
  1. klasa nie ma wirtualnych metod i nie dziedziczy z klasy posiadającej wirtualne metody,
  2. wszystkie klasy bazowe mają trywialny konstruktor,
  3. wszystkie składowe klasy mają trywialne konstruktory.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License