Si può solo creare due costruttori diversi:
T(const T&)
T(const T&,double)
Tuttavia, quello che hai è consentito come un costruttore di copia.
In una nota a margine, ho scoperto che non è generalmente una buona idea usare i parametri di default in C++, ed è invece molto meglio usare gli overload, dove quelli con meno parametri invocano quelli con più parametri, utilizzando valori predefiniti (ovviamente non è possibile con i costruttori in ISO C++ 2003, ma la delega dei costruttori è consentita in ISO C++ 201x). La ragione di ciò è che i valori predefiniti conferiscono alle funzioni diverse firme effettive rispetto al loro comportamento apparente, rendendolo alquanto difficile/doloroso quando si prendono i puntatori delle funzioni. Fornendo sovraccarichi, i puntatori di funzione di ogni possibile tipo di invocazione possono essere presi senza richiedere alcun tipo di meccanismo "vincolante" per farlo funzionare.
fonte
2010-05-07 09:48:31
Vedere [questa PR] (http://llvm.org/bugs/show_bug.cgi?id=5989) che ho inviato a clang qualche tempo fa per alcuni giochi con cui giocare. –
http://punchlet.wordpress.com/2009/12/03/letter-the-third/ –