溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++中的in-out指什么

發(fā)布時(shí)間:2021-11-25 16:31:38 來(lái)源:億速云 閱讀:336 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“C++中的in-out指什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

譯者注:in-out指的是向函數(shù)傳遞輸入信息的同時(shí)又從函數(shù)獲取輸出信息的參數(shù)。

Reason(原因)

This makes it clear to callers that the object is assumed to be modified.

向調(diào)用者明示該對(duì)象可能被修改。

Example(示例)

void update(Record& r);  // assume that update writes to r
Note(注意)

T&類型參數(shù)可以向函數(shù)傳遞信息也可以從函數(shù)獲取信息。因此T&可以作為輸入/輸出參數(shù)使用。(但是如果運(yùn)用不當(dāng),)它本身可能就是一個(gè)問題并且是錯(cuò)誤的起因。

void f(string& s){    s = "New York";  // non-obvious error}
void g(){    string buffer = ".................................";    f(buffer);    // ...}

代碼中函數(shù)g()的編寫者向f()提供一個(gè)緩沖區(qū)用于填充,但是f()簡(jiǎn)單地替換了它(其代價(jià)稍高于簡(jiǎn)單的字符串拷貝)。如通過(guò)g()的編寫者不正確地假設(shè)了buffer的大小,可能會(huì)導(dǎo)致非常不好的錯(cuò)誤。

Enforcement(實(shí)施建議)

  • (Moderate) ((Foundation)) Warn about functions regarding reference to non-const parameters that do not write to them.

    (中等)((基本準(zhǔn)則))當(dāng)有函數(shù)將某引用視為非常量參數(shù)但又不去寫它們的時(shí)候,報(bào)警。

    譯者注:如果只是用于輸入信息,應(yīng)該使用傳值或者const類型。

  • (Simple) ((Foundation)) Warn when a non-const parameter being passed by reference is moved.

    (簡(jiǎn)單)((基本準(zhǔn)則))當(dāng)通過(guò)引用傳遞的非常量參數(shù)被移動(dòng)的時(shí)候報(bào)警。

    譯者注:非常量參數(shù)意味著也會(huì)用于輸出信息,如果內(nèi)容被移動(dòng)則無(wú)法繼續(xù)使用。

“C++中的in-out指什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI