const 修饰函数返回值作用
修饰字面常量:
const int getval(void) { return 100; }
该函数返回值 const 可有可无。
修饰指针:
const int* getptr(void) { int *p = (int *)0xCC; return p; } int main() { const int *p = getptr();//ok int *q = getptr();//error ... return 0; }
指针其指向内容不能被修改。
修饰运算符重载返回值:
函数返回为引用时,如果不想修改函数调用后的值,则用const &const &。 函数返回值引用常量表示不能将函数调用表达式作为左值使用。例如:
int & min( int & i, int & j);
可以对min函数调用进行赋值,因为它返回的是左值。例如min(a,b)=4min(a,b)=4或者min(a,b)+=min(b,a)+5min(a,b)+=min(b,a)+5,对大多数编译器都是合法的(但有些编译器会直接报错或者warning)。
但是,如果对函数的返回值限定为 const 的:const int & min ( int & i, int &j ),那么,就不能对 min ( a, b ) 调用进行赋值了。
修饰运算符重载返回值:
A operator+(const A& a1, const A&a2); ... A a1, a2, a3; a1 + a2 = a3; // 不加 const, 该弱智行为合法
若不加 const 修饰,上述奇怪行为是合法的。

浙公网安备 33010602011771号