Questa domanda riguarda lo standard precedente di C++ 11 (C++ 03). explicit
impedisce conversioni implicite da un tipo all'altro. Per esempio:È necessaria la parola chiave esplicita con un costruttore che prende più di un parametro?
struct Foo
{
explicit Foo(int);
};
Foo f = 5; // will not compile
Foo b = Foo(5); // works
Se abbiamo un costruttore che prende due o più parametri, cosa explicit
prevenire? Capisco che in C++ di inizializzazione 11 si è rinforzato, quindi impedirà costruzioni come:
struct Foo
{
explicit Foo(int, int);
};
Foo f = {4, 2}; // error!
ma in C++ di inizializzazione 03 non abbiamo rinforzato, in modo che tipo di costruzione è il explicit
parola chiave che impedisce qui?
AFAIK assolutamente nulla. È più facile da _ignore_ che da _forbid_. –
Non è cambiato con C++ 11? –
@NeilKirk Cosa è cambiato? Intendi cosa ho indicato nella mia domanda (l'inizializzazione del tutore)? –