Leksykon IT › Programowanie › CRTP

CRTP

Programowanie Svenska → Zaktualizowano: 2026-10-06

Sztuczka C++, w której klasa dziedziczy po szablonie zinstancjonowanym nią samą: class D : public Base<D>. Polimorfizm bez vtable.

James Coplien nazwał ten wzorzec w 1995 roku, gdy zauważył, że raz po raz pojawia się w prawdziwym kodzie. Istota polega na tym, że klasa bazowa zna w czasie kompilacji własny typ pochodny i może wywoływać jego metody przez static_cast<D*>(this). Wywołanie jest bezpośrednie, może zostać wstawione inline, a obiekt unika wskaźnika do tablicy funkcji wirtualnych, który kosztowałby pamięć i pośredni skok. Typowe zastosowania to mixiny dostarczające wspólne operatory, liczniki instancji oraz enable_shared_from_this z biblioteki standardowej. Składnia jest notorycznie trudna do czytania, a nowsze C++ uczyniło większość tego zbędnym dzięki konceptom i deducing this.

← Wróć do leksykonu