Recentemente ho appreso l'identificatore explicit
.Quando utilizzare lo specificatore esplicito per i costruttori a più argomenti?
Supponiamo di avere:
f(W, W, W);
Ora, se facciamo
f(42, 3.14, "seven");
Il compilatore cercherà i seguenti conversioni implicite:
f(W(42), W(3.14), W("seven"));
Se abbiamo definito i costruttori di corrispondenza per W , ovvero:
W(int);
W(double);
W(std::string);
... ci riuscirà.
Tuttavia, se facciamo il primo esplicito:
explicit W(int);
... questo disabilita la conversione implicita.
Si avrebbe ora dovuto scrivere:
f(W(42), 3.14, "seven");
cioè si costringe a dichiarare esplicitamente la conversione
D'ora in poi la domanda:
E 'possibile scrivere:
explicit W(int,int); // 2 arguments!
Th è compilato!
Ma non riesco a vedere nessuno scenario corrispondente che potrebbe richiedere questa sintassi.
Qualcuno può fornire un esempio minimo?
Parte di questo potrebbe essere solo per motivi di coerenza, poiché le funzioni multiparametriche possono anche avere valori predefiniti, ad es. 'esplicito W (int, int = 0);'. – Rufflewind