C++中函式返回值的引用型別與非引用型別的區別
返回值為引用型別的函式某些情況下可作為表示式的左值,而非引用的則一般不可以。
函式返回值若為引用型別,當返回的是函式的引用形參時,則是對函式外的變數的引用,函式可以作為表示式的左值(被賦予新值)。
而當函式返回的是非引用型別時,返回的值是函式內隱式生成的臨時變數,當函式結束析構時釋放,函式作為左值被賦予新值沒有意義或產生錯誤。(例外情況,當返回的是函式中用new等動態記憶體分配函式建立的指標時,可作為左值。)
注:“引用型別”並非是一種新的型別,也沒有這種型別,只是為了口頭上的方便說的,是對某某型別變數的引用的個人說法。
相關推薦
C++中函式返回值的引用型別與非引用型別的區別
返回值為引用型別的函式某些情況下可作為表示式的左值,而非引用的則一般不可以。 函式返回值若為引用型別,當返回的是函式的引用形參時,則是對函式外的變數的引用,函式可以作為表示式的左值(被賦予新值)。 而當函式返回的是非引用型別時,返回的值是函式內隱式生成的
誤人子弟篇之C語言函式返回值與引數傳遞
寫在開頭以免看到結尾你,此篇部落格純屬瞎扯,看看就可以了,不要當真哦! 如果搞過彙編,寫過子程式,那麼你就不用看了,因為看到最後你會發現,在彙編中你有很多方法去返回值,傳遞引數,而在高階語言中,編譯器只是選擇了其中的一種而已,而這篇部落格也寫的毫無邏輯,簡直喪盡天良,草菅人
C++中函式返回陣列指標的幾種方法總結
因為陣列不能被拷貝,所以函式不能返回陣列。不過,函式可以返回陣列的指標或引用。返回陣列指標的方法有以下幾種: 1、方法一:使用類型別名。如下 typedef int arrt[10];//arrT是一個類型別名,它表示的型別是含有10個整數的陣列
C語言函式返回值的實現方法和誤區
例項:你們認為這三個函式能正常返回嗎? int func1(int a , int b) { int c = 0; c = a + b; return c; } char * func2() { char *strTmp = "abs"; return str
shell 中函式返回值的接收
shell中函式返回值接收主要有兩種方法。 方法一: 函式子程式的標準輸出賦值給主程式的變數。 ret=`function_name arg1 arg2 ...` 注意:不是引號。 例
js中函式返回值return
全棧工程師開發手冊 (作者:欒鵬) 函式返回值 1、所有函式都有返回值,沒有return語句時,預設返回內容為undefined,和其他面向物件的程式語言一樣,return語句不會阻止f
C++中函式過載、隱藏、覆蓋和重寫的區別 轉自:http://www.bijishequ.com/detail/277975?p=
程式碼編譯執行環境:VS2012+Debug+Win32 1.函式過載(Function Overload) 1.1定義 C++規定在同一作用域中,同名函式的形式引數(指引數的個數、型別或者順序)不同時,構成函式過載。 1.2用法 比如,要從兩個變數中返回其中較
C++基礎---有返回值型別函式(返回引用型別)
1. C++基礎—有返回值型別函式(返回引用型別) 1.1 引用的定義 引用就是某個目標變數的“別名”(alias),對引用的操作與對變數直接操作效果完全相同。 申明一個引用的時候,切記要對其
C++ 引用作為函式返回值
(1)以引用返回函式值,定義函式時需要在函式名前加 & (2)用引用返回一個函式值的最大好處是,在記憶體中不產生被返回值的副本。 引用作為返回值,必須遵守以下規則: (1)不能返回區域性變數的引用。主要原因是區域性變數會在函式返回後被銷燬,因此被返回的引用就成為了
詳解C語言和C++中的main()函式返回值
返回值main應指示程式如何退出。返回值為0表示正常退出main。異常退出通常通過非零返回來表示,但是關於非零程式碼沒有明確的標準。另外,void main()在C ++標準庫明確被禁止,不應該被使用。在C++中合法的main函式使用方法如下: int main() 以及: int
C++基礎知識(八)---函式返回值(返回值,返回指標,返回物件,返回引用)---引用---複製建構函式(拷貝建構函式)
一、函式返回值 1.返回值: int test () { int a=1; return a; } 返回值時最簡單的方式,它的操作主要在棧上,變數a在函式結束後會刪除,為了返回a的值,系統會在內部建立一個臨時變數儲存a的值,以返回給呼叫該函式的表示式,呼叫結束後變數便
C++中sting的rfind函式返回值
string中的find函式與rfind函式定義如下: int find(char c, int pos = 0) const;//從pos開始查詢字元c在當前字串的位置 int find(const char *s, int pos = 0) const;//從pos開始
C++函式返回值介紹(含return 0 與 return 1 與 return -1介紹)
很多人在學習C++ 的過程中應該會留意到返回值的問題,特別是習慣用:int main() 的猿類同伴們。我們需要在函式結尾寫個返回值。 int main(){ return 0; } 接下來就給大家簡單介紹一下返回值。 一、返回值型別 C++函式可以返回多種型
C++中函式引數傳遞(值傳遞、指標傳遞,引用傳遞)
今天想寫一個函式,從函式中把我需要的兩個值傳出來,由於傳出來的值比較多,所以不考慮用return來返回,需要通過引數把修改後的值拉出來供我使用,很當然的就想到了用指標,但是值就是傳不出來;使我對原有的大腦中指標的思維產生混沌感,今天一上午才把函式傳遞又走了
C++ 字串 14-- 18.40.結構體與函式 結構體作為函式引數、結構體指標作為函式返回值
#include <iostream> #include <string> using namespace std; /*--------------------------------- 18.40.結構體與函式 結構體作為函式引數、結構體指標作為
JS中new操作符與函式返回值return
預設情況 預設情況下函式的返回值為undefined(即沒有顯示地定義返回值的話),但是建構函式比較例外,new建構函式在沒有return的情況下預設返回新建立的物件。但是在有顯示返回值的情況下,如果返回值為基本資料型別的話(string,number,b
C++程式碼片段(一)萃取函式返回值型別,引數型別,引數個數
函式的型別主要集中在以下幾種 函式指標 函式物件,是一個類物件,內部過載的operator()函式是一個函式指標 lambda,匿名函式物件,同函式物件 function物件 後三者都是類物件,可以看成一種型別 定義基礎模板類 t
C# socket 程式設計之 accept() 函式返回值解析
accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是
引用作為函式返回值的分析
例如,下面的程式是有關引用返回的4種形式: //********************* //** ch9_6.cpp ** //*******************
Python函式中的變數和函式返回值
1.函式的變數 區域性變數和全域性變數: Python中的任何變數都有特定的作用域 在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用的變數我們稱之為區域性變數 在一個檔案頂部定義的變數可以供檔案中的任何函式呼叫,這些可以為整個程式所使用的變數稱為全域性變數。