函数参数C++中的赋值运算符

Har*_*Cho 10 c++ parameters function-parameter assignment-operator

我正在研究数据结构(列表,堆栈,队列),这部分代码让我感到困惑.

ListNode( const Object& theElement = Object(), ListNode * node = NULL);


template<class Object>
ListNode<Object>::ListNode( const Object& theElement, ListNode<Object> * node) {
    element = theElement;
    next = node;
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么函数参数中有赋值运算符?
  2. 什么Object()电话呢?

Cha*_*via 18

那些不是赋值运算符.这些是函数的默认参数.

函数可以有一个或多个默认参数,这意味着如果在调用点没有提供参数,则使用默认值.

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
}
Run Code Online (Sandbox Code Playgroud)

在您发布的示例代码中,ListNode构造函数有两个带默认参数的参数.第一个默认参数是Object(),它只是简单地调用默认的构造函数Object.这意味着如果没有Object实例传递给ListNode构造函数,Object()将使用默认值,这意味着默认构造Object.

另请参阅:
使用默认功能参数的优点功能参数的
默认值