注意C 模板函式的實參

2021-05-24 05:42:32 字數 476 閱讀 8918

#include

#include

std::string& relabel(std::string &str)

{char c;

c = str[0];

std::replace(str.begin(), str.end(), c, 'a');

std::replace(str.begin(), str.end(), str[1], 'b');

return str;

relabel(std::string("123321")),返回值是"ab332a"。

第一句std::replace()將兩個'1'改為'a';第二句std::replace()只將第乙個'2'改為'b',第二個'2'仍保持原樣,不符合呼叫目的。

注意:模板函式類似巨集替換,如果實參的值在呼叫過程中被改變,有可能達不到呼叫模板函式的目的。但是有時這種替換又很有用,例如str.end()這樣可以根據str動態變化的。

C 函式模板的實參推斷

在使用類模板建立物件時,程式設計師需要顯式的指明實參 也就是具體的型別 例如對於下面的 point 類 templateclass point 我們可以在棧上建立物件,也可以在堆上建立物件 pointp1 10,20 在棧上建立物件 point p new point 東京180度 北緯210度 在...

C語言 函式的形參與實參

形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫...

c 虛函式與預設實參

c primer 中原文 像其他任何函式一樣,虛函式也可以有預設實參。通常,如果有用在給定呼叫中的預設實參值,該值在編譯時確定。如果乙個呼叫省略了具有預設值的實參,則所用的值由呼叫該函式的型別定義,與物件的動態型別無關 通過基類的引用或指標呼叫虛函式時,預設實參為在基類虛函式宣告中指定的值,如果通過...