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 ...