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:
- klasa nie ma wirtualnych metod i nie dziedziczy z klasy posiadającej wirtualne metody,
- wszystkie klasy bazowe mają trywialny konstruktor,
- wszystkie składowe klasy mają trywialne konstruktory.