Template con Parametri di Tipo Predefiniti
Scorri per mostrare il menu
È possibile specificare un tipo di parametro predefinito per un template di classe e, a partire da C++11, anche gli argomenti di template predefiniti possono essere utilizzati nei template di funzione. Per impostare un tipo predefinito, basta scrivere il tipo desiderato dopo il segno di uguale per il parametro del template.
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); }
Quando esegui il codice sopra, l'output sarà 25 invece di 25.5. Questo accade perché il tipo predefinito per la classe Box è impostato su int, che tronca la parte decimale del valore.
Simile agli argomenti predefiniti delle funzioni, se un parametro di template ha un argomento predefinito, allora tutti i parametri di template che lo seguono devono anch'essi avere argomenti predefiniti.
Oltre ai parametri di tipo predefiniti, C++ consente parametri di template non di tipo con valori predefiniti. I parametri non di tipo possono essere tipi integrali, puntatori o riferimenti. Per specificare un parametro non di tipo predefinito, basta assegnare un valore predefinito dopo il parametro.
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` }
I parametri di template predefiniti semplificano il codice, riducono la ridondanza e consentono ai template di gestire i casi d'uso tipici con il minimo sforzo, permettendo comunque la personalizzazione quando necessario.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione