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;
}
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.
void foo(int x = 10) { std::cout << x << std::endl; }
int main()
{
foo(5); // will print 5
foo(); // will print 10, because no argument was provided
}
In the example code you posted, the ListNode
constructor has two parameters with default arguments. The first default argument is Object()
, which simply calls the default constructor for Object
. This means that if no Object
instance is passed to the ListNode
constructor, a default of Object()
will be used, which just means a default-constructed Object
.
See also:
Advantage of using default function parameter
Default value of function parameter