Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Templates with Default Type Parameters | Шаблони Класів
Шаблони C++

Templates with Default Type Parameters

Свайпніть щоб показати меню

Можливо вказати тип параметра за замовчуванням для шаблону класу, і починаючи з C++11, аргументи шаблону за замовчуванням також можна використовувати у шаблонах функцій. Щоб встановити тип за замовчуванням, просто вкажіть потрібний тип після знака рівності для параметра шаблону.

main.cpp

main.cpp

123456789101112131415
#include <iostream> template <typename T = int> // `int` will be used as a default type class Box { T value; // Stores the value of type `T` public: Box(T value) : value(value) { std::cout << this->value; } }; int main() { // Type not specified // VV Box<> intBox(25.5); }

Під час виконання наведеного вище коду результатом буде 25 замість 25.5. Це відбувається тому, що тип за замовчуванням для класу Box встановлено як int, що призводить до відкидання дробової частини значення.

Note
Примітка

Подібно до стандартних аргументів функцій, якщо один параметр шаблону має значення за замовчуванням, то всі параметри шаблону після нього також повинні мати значення за замовчуванням.

Окрім типових параметрів за замовчуванням, C++ дозволяє використовувати нетипові параметри шаблону зі значеннями за замовчуванням. Нетипові параметри можуть бути цілочисельними типами, вказівниками або посиланнями. Щоб вказати нетиповий параметр за замовчуванням, достатньо призначити йому значення після параметра.

array.h

array.h

123456
// `int` and `10` are default parameters template <typename T = int, size_t Size = 10> struct Array { T arr[Size]; // Array with a fixed size of `Size` }

Параметри шаблону за замовчуванням спрощують код, зменшують надмірність і дозволяють шаблонам обробляти типові випадки використання з мінімальними зусиллями, забезпечуючи можливість налаштування за потреби.

question mark

Коли параметр шаблону має значення за замовчуванням, що з наведеного є правильним?

Виберіть усі правильні відповіді

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 3
some-alt