Синтаксис на шаблона

Ако ще използвате шаблони, свикнете с факта, че терминът параметризиран често ще се чува във вашата реч. Шаблоните се използват за създаване на параметризирани типове (обикновено класове) и параметризирани функции.

Параметризирани типове

шаблон клас ListNode < private:

ListNode * следващ; Тип * данни;

ListNode (Type * d, ListNode * n = NULL): next (n), data (d) <>

Тип * Данни () < return data; >ListNode * Напред ()

ListNode list = нов ListNode (нов Foo);

Foo * f = list-> Data (); // Връща правилния тип

Параметризирани функции

// Шаблон за декларация на функция Тип * fn (Тип * t);

// Определете неговия шаблон за изпълнение

// Функционално тяло, в което името е Type

// използва се като параметър за макроса

Foo * f = fn (нов Foo);

Дефиницията се генерира от компилатора, когато е необходимо, т.е. когато функцията е извикана. Този път името на функцията е параметризирано, а не името на класа.

Параметризирани функции на класа

шаблон клас ListNode < private:

Следва ListNode; Тип * данни;

ListNode (Тип * d, ListNode * n = NULL);

Тип * Данни (); ListNode * Напред ();

ListNode: ListNode (Type * d, ListNode * n = NULL): next (n), data (d)

Тип * ListNode: Данни ()

ListNode * ListNode: Следващ ()

Не забравяйте: всичко това трябва да е във .h файла. Изключение правят само ситуации, когато функциите на клас се извикват само от .cpp файла, в който са дефинирани. В този случай дефинициите на функциите на класа трябва да предшестват първото им използване.

Предаване на параметър

1. Зад ключовата дума в самото начало.

2. При посочване на името на конструктора.

3. При посочване на името на деструктора.

Аргументите към конструктори и деструктори трябва да бъдат параметризирани, точно както всички употреби на името на класа, с изключение на трите посочени случая. С всяко използване на параметризираното