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 修饰,上述奇怪行为是合法的。

 

 转自:(20条消息) const 作为函数返回类型_rose_gong的专栏-CSDN博客_函数返回const

posted @ 2022-01-19 14:52  补码  阅读(609)  评论(0)    收藏  举报