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í)間,使用引用就只傳地址,和按指針傳遞一樣,但是使用起來(lái)又比指針簡(jiǎn)單安全,就是在使用原數(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語(yǔ)言編程數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)據(jù)在內(nèi)存中存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
解決C語(yǔ)言中使用scanf連續(xù)輸入兩個(gè)字符類型的問(wèn)題
這篇文章主要介紹了解決C語(yǔ)言中使用scanf連續(xù)輸入兩個(gè)字符類型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
C++基于EasyX實(shí)現(xiàn)簡(jiǎn)單掃雷游戲
這篇文章主要為大家詳細(xì)介紹了C++基于EasyX實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
C++實(shí)現(xiàn)寢室衛(wèi)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)寢室衛(wèi)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
QT+OpenGL實(shí)現(xiàn)簡(jiǎn)單圖形的繪制
這篇文章主要為大家詳細(xì)介紹了如何利用QT和OpenGL實(shí)現(xiàn)簡(jiǎn)單圖形的繪制,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12
Qt中QHostInfo::lookupHost()函數(shù)的方法示例
QHostInfo::lookupHost()是Qt網(wǎng)絡(luò)模塊提供的異步主機(jī)信息查詢接口,用于根據(jù)主機(jī)名或IP字符串查詢對(duì)應(yīng)的主機(jī)信息,下面就來(lái)詳細(xì)的介紹一下該函數(shù),感興趣的可以了解一下2025-12-12

