оператор присваивания в параметре функции C ++

Я изучаю структуры данных (List, Stack, Queue), и эта часть кода сбивает меня с толку.

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?