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.
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License