const 作為函式返回型別

2021-06-29 05:28:26 字數 2198 閱讀 9865

const 作為函式返回型別,最終目的是希望呼叫函式時將返回值作為常量處理。細分為三種情況。

const

int getval(void)

該函式返回值裡的const其實是可有可無的。

const

int* getptr(void)

int main()

函式返回為引用時,如果不想修改函式呼叫後的值,則用

const &

。 函式返回值引用常量表示不能將函式呼叫表示式作為左值使用。例如:

int & min( int & i, int & j);
可以對min函式呼叫進行賦值,因為它返回的是左值。例如mi

n(a,

b)=4

或者mi

n(a,

b)+=

min(

b,a)

+5,對大多數編譯器都是合法的(但有些編譯器會直接報錯或者warning)。

但是,如果對函式的返回值限定為 const 的:

const  int  & min ( int & i, int  &j )

, 那麼,就不能對 min ( a, b ) 呼叫進行賦值了。

運算子過載時,如果不想修改使用運算子後的表示式的值,就應該將過載函式返回值設為

const &

struct b

}void main()

struct b

}void main()

**除錯示例:

#include 

using

namespace

std;

//int & absum(int & a, int & b) //返回區域性物件的引用,n

//const int & absum(int & a, int & b)//返回了a+b這個區域性物件的引用,n

//int & absum(const int & a, const int & b)//返回了a+b這個區域性物件的引用,n

//int absum(int & a, int & b) //返回區域性物件的副本,並且不希望被當做左值呼叫,y; 若absum(a,b) += 2, n

//int absum(const int & a, const int & b) //返回區域性物件的副本,y

//const int & absum(const int & a, const int & b)//返回區域性物件的引用,且不希望被當做左值呼叫,warning(把引用符號去掉後就無warning); 若absum(a,b) += 2, error;

//const int & absum(const int & a, const int & b)//返回了a+b這個區域性物件的引用,n

//const int absum(int & a, int & b)//位址傳遞, 返回區域性物件的副本,y

//const int absum(int a, int b)//值傳遞, 返回區域性物件的副本,y;

const

int absum(const

int & a, const

int & b)//返回區域性物件的副本,且不希望被當做左值呼叫,y; effective c++中第二種情況:呼叫後不修改返回物件的值時,返回const; 若absum(a,b) += 2,不允許;

const

int & abmax(const

int & a, const

int & b) //effective c++中第一種情況:不修改引數時,返回const

const

int* getptr(void) //不修改指標指向的內容

class b

; int m_data[10];

int & operator (int i) // bb[0] = 2, y

//const int & operator (int i) // bb[0] = 2, n

//int operator (int i) // bb[0] = 2, n;

//const int operator (int i) // bb[0] = 2, n

};int main()

vector作為函式返回型別

include include using namespace std vectorfun1 int num return values int main return 0 vector可以像普通變數那樣在函式體內宣告後返回 返回的是臨時物件 只能複製 不能返回他的引用和迭代器 如果vector 裡...

iOS swift中函式型別作為返回型別

你可以用函式型別作為另乙個函式的返回型別。你需要做的是在返回箭頭 後寫乙個完整的函式型別。下面的這個例子中定義了兩個簡單函式,分別是stepforward和stepbackward。stepforward函式返回乙個比輸入值大一的值。stepbackward函式返回乙個比輸入值小一的值。這兩個函式的...

C 以const 作為返回值型別的意義

const rational operator const rational lhs,const rational rhs 很多程式設計師第一眼看到它會納悶 為什麼operator 的返回結果是乙個const物件?因為如果不是這樣,使用者就可以做下面這樣的壞事 rational a,b,c a b ...