Sto studiando strutture dati (Elenco, Stack, Coda) e questa parte di codice mi confonde.operatore di assegnazione con parametro funzione C++
ListNode(const Object& theElement = Object(), ListNode * node = NULL);
template<class Object>
ListNode<Object>::ListNode(const Object& theElement, ListNode<Object> * node) {
element = theElement;
next = node;
}
- Perché ci sono operatori di assegnazione all'interno di parametri di funzione?
- Che cosa fa la chiamata
Object()
?
Sono tentato di up-voto, se si desidera ricordare che i parametri di default sono una delle caratteristiche più "male" C++. Trasformano i costruttori innocenti nella conversione di costruttori o costruttori predefiniti. Fanno fatica a "legare" le funzioni. Sono un ostacolo quando devono essere specificati solo alcuni parametri e altri lasciati al valore predefinito. – pmr
Neanch'io. Una taglia non va bene per tutti. A volte sono molto utili. – Spook
@ pmr, non sono necessariamente d'accordo con te sul fatto che siano "cattivi". Sono un modo utile per evitare di ripetere te stesso scrivendo più costruttori, quando puoi semplicemente fornire un costruttore con un parametro predefinito. Le implementazioni di libreria standard spesso ne traggono vantaggio, ad es. 'vector (const allocator_type & a = allocator_type());' –