簡體   English   中英

函數參數C ++中的賦值運算符

[英]assignment operator within function parameter 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;
}
  1. 為什么函數參數中包含賦值運算符?
  2. Object()調用做什么?

這些不是賦值運算符。 這些是該函數的默認參數

一個函數可以具有一個或多個默認參數 ,這意味着如果在調用點未提供任何參數,則使用默認值。

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編程語言編寫的運算符和表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM