C++中按引用傳遞參數(shù)的好處有哪些
C++按引用傳遞參數(shù)的好處
pass by reference
對(duì)于數(shù)組和結(jié)構(gòu)這種大的數(shù)據(jù),按值傳遞(pass by value)需要?jiǎng)?chuàng)建副本,占內(nèi)存費(fèi)時(shí)間,使用引用就只傳地址,和按指針傳遞一樣,但是使用起來又比指針簡單安全,就是在使用原數(shù)據(jù)。
對(duì)于unique_ptr智能指針模板類,它只允許源指針是臨時(shí)右值時(shí)候的賦值,所以如果實(shí)參不是臨時(shí)右值,按值傳遞就會(huì)成為非法賦值,編譯器報(bào)錯(cuò)。
示例
#include <iostream> #include <string> #include <memory> #include <vector> #include <algorithm> //for_each函數(shù) using std::string; using std::cout; using std::cin; using std::endl; std::unique_ptr<int> make_int(int n) { return std::unique_ptr<int> (new int(n));//返回int的智能指針,用傳入的參數(shù)n初始化 } void show(std::unique_ptr<int> & a)//這里必須按引用傳遞,因?yàn)槿绻粗祩鬟f //那么就要用一個(gè)非臨時(shí)右值作為a的實(shí)參,對(duì)于unique_ptr類是不允許的 { cout << *a << ' '; } int main() { int size = 5; std::vector<std::unique_ptr<int>> vp(size); for (int i=0;i<size;++i) vp[i] = make_int(rand() % 1000); vp.push_back(make_int(rand() % 1000));//可以調(diào)用成功是因?yàn)閰?shù)是一個(gè)臨時(shí)右值 for_each(vp.begin(), vp.end(), show); return 0; }
41 467 334 500 169 724
Process returned 0 (0x0) execution time : 0.329 s
Press any key to continue.
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++中指針的數(shù)據(jù)類型和運(yùn)算相關(guān)知識(shí)小結(jié)
這篇文章主要介紹了C++中指針的數(shù)據(jù)類型和運(yùn)算相關(guān)知識(shí)小結(jié),是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C++編程異常處理中try和throw以及catch語句的用法
這篇文章主要介紹了C++編程異常處理中try和throw以及catch語句的用法,包括對(duì)Catch塊的計(jì)算方式的介紹,需要的朋友可以參考下2016-01-01詳解C語言中symlink()函數(shù)和readlink()函數(shù)的使用
這篇文章主要介紹了詳解C語言中symlink()函數(shù)和readlink()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C++使用cuBLAS加速矩陣乘法運(yùn)算的實(shí)現(xiàn)代碼
這篇文章主要介紹了C++使用cuBLAS加速矩陣乘法運(yùn)算,將cuBLAS庫的乘法運(yùn)算進(jìn)行了封裝,方便了算法調(diào)用,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-09-09C++調(diào)用C接口的實(shí)現(xiàn)示例
這篇文章主要介紹了C++調(diào)用C接口的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12C語言實(shí)現(xiàn)循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)循環(huán)隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07