使用const引用的常見原因在於提高效率。
方式1
vector max(const vector &v1,const vector &v2)
方式2
const vector& max(const vector &v1,const vector &v2)
這裡需要注意三點:首先,返回物件將會呼叫複製建構函式,而返回引用不會。因此,第二個版本的效率更高;其次,引用指向的物件因該在呼叫函式執行時存在;第三,為什麼要返回const,因為v1和v2都被宣告為const
返回非const型別的引用旨在提高效率,比如我們重寫《插入運算子,返回的ostream物件必須是非const型別的引用。
如果被返回的物件是被呼叫函式中的區域性物件,則我們就不能夠返回指標引用。因此當控制權毀掉呼叫函式時,引用已經不存在了。所以在這種情況下,我們應該放回物件而不是引用。
假如我們直接返回乙個物件,那麼我們可能會在程式中遇到一些容易令人誤解的語句
net = v1 + v2;
v1 + v2 = net;
cout<<(v1 + v2 = net).getlength();
當我們返回了const型別的物件,我們能夠阻止令人生畏的後兩句的出現 C 返回物件和返回引用
最大的區別在於,返回物件的話會在記憶體中根據返回的型別開闢一塊區域,用返回的值對該記憶體進行初始化,如果是返回的物件,利用拷貝構造來初始化這個區域,但是這塊區域並沒有名字,就是說之後使用者沒辦法訪問到這個區域,也成為無名變數,它只能在接下來的 中進行一次性的用途,要不作為引數傳遞,或者將值列印,再之...
C 返回物件和返回引用
我們發現,在c 中,有些成員函式返回的是物件,而有些函式返回的又是引用。返回物件和返回引用的最主要的區別就是函式原型和函式頭。car run const car 返回物件 car run const car 返回引用 返回物件會涉及到生成返回物件的副本。因此,返回物件的時間成本包括了呼叫複製建構函式...
C 返回區域性物件
引用 看做乙個靜態的指標 const 指標 引用是c 中的概念,引用既不是變數的拷貝,也不是指向變數的指標 相對於指標 引用被建立同時必須被初始化 不能有null引用,必須與合法儲存單元關聯 引用被初始化,引用關係就不能改變 我的理解是引用是編譯器產生的變數表中變數的乙個名字,類似於表中這個變數的索...