оператор присваивания в параметре функции C++
Я изучаю структуры данных (Список, стек, очередь), и эта часть кода сбивает меня с толку.
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()
вызов делать?
3 ответов
это не операторы присваивания. Это аргументы по умолчанию для функции.
функция может иметь один или несколько аргументы по умолчанию, что означает, что если в точке вызова аргумент не указан, используется значение по умолчанию.
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
}
в примере кода, который вы выложили, то ListNode
конструктор имеет два параметра с аргументами по умолчанию. Первый аргумент по умолчанию -Object()
, которым просто называет конструктор по умолчанию на Object
. Это означает, что если нет Object
экземпляр передается ListNode
конструктор по умолчанию Object()
будет использоваться, что просто означает построенный по умолчанию Object
.
Читайте также:
преимущество использования параметра функции по умолчанию
значение по умолчанию параметр функция
назначения в объявлениях предоставляют значения по умолчанию для дополнительные параметры. Object()
означает вызов Object
'конструктор по умолчанию.
влияние параметров по умолчанию выглядит следующим образом: вы можете вызвать ListNode
конструктор с нулевым, одним или двумя параметрами. При указании двух выражений параметров они передаются как обычно. Если указано только одно выражение, его значение передается в качестве первого параметра, а второе значение по умолчанию равно NULL
. Если вы не передаете никаких параметров, первый параметр по умолчанию используется для экземпляра Object
создан с помощью конструктора по умолчанию, а второй по умолчанию имеет значение NULL
.
перейти к http://www.errorless-c.in/2013/10/operators-and-expressions.html для операторов и выражений на языке программирования c