I’m studying data structures (List, Stack, Queue), and this part of code is confusing me.
ListNode( const Object& theElement = Object(), ListNode * node = NULL);
template<class Object>
ListNode<Object>::ListNode( const Object& theElement, ListNode<Object> * node) {
element = theElement;
next = node;
}
- Why there are assignment operators within function parameters?
- What does
Object()call do?
Those are not assignment operators. Those are default arguments for the function.
A function can have one or more default arguments, meaning that if, at the calling point, no argument is provided, the default is used.
In the example code you posted, the
ListNodeconstructor has two parameters with default arguments. The first default argument isObject(), which simply calls the default constructor forObject. This means that if noObjectinstance is passed to theListNodeconstructor, a default ofObject()will be used, which just means a default-constructedObject.See also:
Advantage of using default function parameter
Default value of function parameter