Sono un po 'confuso dopo aver letto qualcosa in un libro di testo. Per quanto riguarda il codice:È un cast o una costruzione?
void doSomeWork(const Widget& w)
{
//Fun stuff.
}
doSomeWork(Widget(15));
doSomeWork()
prende un parametro const Widget&
. Il libro di testo, Effective C++ III, afferma che questo crea un oggetto Widget temporaneo da passare a doSomeWork. Si dice che questo può essere sostituito da:
doSomeWork(static_cast<Widget>(15));
come entrambe le versioni sono calchi - la prima è solo un cast di tipo C la funzione a quanto pare. Avrei pensato che Widget(15)
avrebbe richiamato un costruttore per il widget prendendo comunque un parametro intero.
Il costruttore potrebbe essere eseguito in questo caso?
@Constantinius: cosa c'è di sbagliato qui? – AnT
Ho modificato la tua risposta. –