assignment operator within function parameter C++

assignment-operator, c++, function-parameter, parameters

Solution

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

Problem

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?

Original source

Related problems