在海大本科課程設計的 繼承實驗中 matrix 類的成員函式 unsignedchar& at(int row, int col); //獲取第row行第col列的矩陣元素的值
涉及到了返回引用型別的函式返回值:
函式的返回主要分為以下幾種情況:
1、主函式main的返回值:
允許主函式main沒有返回值就可結束;可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。
2、返回非引用型別:
3、返回引用型別:
1) 海大本科課程設計的 繼承實驗中 matrix 類的成員函式 unsignedchar& at(int row, int col); 就是這種情況:
可以把函式定義為引用型別,這時函式的返回值即為某一變數的引用(別名),因此,它相當於返回了乙個變數,所以可對其返回
值進行賦值操作。這一點類同於函式的返回值為指標型別。 由於函式呼叫返回的引用型別是在函式執行結束後產生的,所以函式不
能返回自動變數和形參。返回的變數的引用,這個變數必須是全域性變數或靜態區域性變數,即儲存在靜態區中的變數。
看個例子:
/*
* main.cpp
* * created on: 2012-9-18
* author: china
* * 注意:由於函式呼叫返回的引用型別是在函式執行結束後產生的,所以函式不能返回自動變數和形參。
返回的變數的引用,這個變數必須是全域性變數或靜態區域性變數,即儲存在靜態區中的變數。
* */
#include using namespace std;
int a = 4;
//函式返回a的引用,即a的別名!!!!
int &f(int x)
int main(int argc, char **argv)
2)當函式返回引用型別時,沒有複製返回值,相反,
返回的是物件本身。
3)千萬
不要返回區域性物件的引用
!千萬不要返回指向區域性物件的指標!
當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的引用就會指向不確定的記憶體!返回指向區域性物件的指標也是一樣的,當函式結束時,區域性物件被釋放,返回的指標就變成了不再存在的物件的懸垂指標。
4)返回引用時,要求
在函式的引數中,包含有以引用方式或指標方式存在的,需要被返回的引數。
int& abc(int a, int b, int c, int& result)
int& abc(int a, int b, int c)
4、返回const型別
由於返回值直接指向了乙個生命期尚未結束的變數,因此,對於函式返回值(或者稱為函式結果)本身的任何操作,都在實際上,是對那個變數的操作,這就是引入const型別的返回的意義。當使用了const關鍵字後,即意味著函式的返回值不能立即得到修改!如下**,將無法編譯通過,這就是因為返回值立即進行了++操作(相當於對變數z進行了++操作),而這對於該函式而言,是不允許的。如果去掉const,再行編譯,則可以獲得通過,並且列印形成z = 7的結果。
include include const int& abc(int a, int b, int c, int& result)
int main()
5、例子
下面是乙個段有錯誤的**,找出其中的錯誤。
錯誤**
#include using namespace std;
int val()
int & ref()
int main()
正確**
#include using namespace std;
int j=3;//j是全域性變數
int val()
int & ref()
int main()
{ int vv = val();
int rv = val();//int &rv = val()錯誤!val()返回的是乙個int型的數,而給引用&rv 賦值的必須是乙個同型別的變數。
int vr = ref();
int & rr = ref();
cout<
C 函式的返回值 返回引用型別 非引用型別
函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。2 返回非引用型別 3 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...
C 函式的返回值 返回引用型別 非引用型別
函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。2 返回非引用型別 3 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...
C 函式的返回值 返回引用型別 非引用型別
函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。2 返回非引用型別 3 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...