1、基本概念
如果函式的實參數量未知但是全部實參的型別都相同,那麼我們可以使用initializer_list型別的形參。initializer_list是一種標準庫型別,用於表示某種特定型別的值得陣列。
vector是c++標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。initializer_list是c++標準程式庫中的乙個標頭檔案,定義了c++標準中乙個非常輕量級的表示初始化器列表的類模板initializer_list及有關函式。
與vector不同的是,initializer_list物件中的元素永遠是常量值,我們無法改變initializer_list物件中元素的值。
2、initializer_list的一些操作
(1)initializer_list< t > lst : 預設初始化,t型別元素的空列表;
(2)initializer_list< t > lst : lst的元素數量和初始值一樣多,lst的元素是對應初始值的副本,列表中的元素為const
(3)lst2(lst)或者lst2 = lst:拷貝或者賦值乙個initializer_list物件,拷貝後,原始列表和副本共享元素;
(4)lst.size():列表中的元素數量;
(5)lst.begin():返回指向lst中首元素的指標;
(6)lst.end():返回指向lst中尾元素下一位置的指標。
3、注意
(1)如果向initializer_list形參中傳遞乙個值得序列,則必須把串行列放在一對花括號{}內,舉例:
if(expected!=actual)
error_msg();
else
error_msg();
在上述**中,一共呼叫了兩次同乙個函式error_msg(),兩次呼叫傳遞的引數數量不一樣。
(2)含有initializer_list形參的函式也可以同時擁有其他形參。
非引用形參VS指標形參VS引用形參
一 非引用形參 voidadd1 intv1 這是最普通的形參方式,當函式被呼叫時,呼叫拷貝建構函式,生產乙個新的例項,函式所有的修改,都是對新的例項的修改 函式退出之前,會呼叫析構函式,資源。二 指標形參 voidadd2 int p 使用指標做為函式的形參,同樣指標的值 指標的位址 不會因為 p...
引用形參 指標形參的使用
引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...
函式引數 普通形參和引用形參
在呼叫函式時候,引用形參和普通型參是有著很大的區別。首先看函式在使用普通型參時候,編譯器是怎麼工作的。在函式呼叫的時候,編譯器為被調函式在棧空間申請一塊記憶體,此時普通形參也在這塊記憶體取,被實參初始化。說到這裡就明白了,在被調函式執行完畢後,編譯器會將其彈出棧空間。因此,形參也就消失了,此時主函式...