Estoy estudiando estructuras de datos (Lista, Pila, Cola), y esta parte del código me está confundiendo.operador de asignación dentro del parámetro de función 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;
}
- Por qué existen operadores de asignación dentro de los parámetros de función?
- ¿Qué significa
Object()
hacer?
Estoy tentado de arriba-voto si desea mencionar que los parámetros por defecto son una de las características más "mal" de C++. Convierten constructores inocentes en la conversión de constructores o constructores por defecto. Ellos dificultan las funciones de 'enlace'. Son un obstáculo cuando solo algunos parámetros deben ser especificados y otros quedan por defecto. – pmr
Yo tampoco. Una talla no sirve para todos. A veces son muy útiles. – Spook
@pmr, no necesariamente estoy de acuerdo contigo en que son "malvados". Son una forma útil de evitar repetirse escribiendo varios constructores, cuando simplemente puede proporcionar un constructor con un parámetro predeterminado. Las implementaciones de la biblioteca estándar a menudo aprovechan esto mediante, p. 'vector (const allocator_type & a = allocator_type());' –