const int& f() const; 和 int& f(); 在调用时候怎么区分和各有什么用途。

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:31:03
const int& f()const;前面的const是防止引用值被修改,后面的const是防止类内数值被修改;这样感觉有点重复,所以我也想知道前后都加const和只加前const有什么区别。(呵呵!这个无所谓。)
主要是标题的问题,下面的问题不用回答。
所以,我主要想问的是如果
const int& f() const; 和 int& f();
在同一个类内申明,那么调用的时候有什么区别,
怎么区别和各有什么用。

不好意思,问题的补充比问题长,喧宾夺主了,害的大家误解!
抱歉抱歉!

const int &f()const 首先表明函数不能修改调用的成员变量,然后int &表明函数返回一个int类型的引用,但是前面的const表明不能通过这个返回的引用来改变它的值。而int &f()仅表示函数返回一个int型引用。调用哪个函数就要看你创建的对象了,如果你创建的对象是const的,那么只能调用第一个,因为不能修改对象成员变量。
这个函数f()必然是有参数的,不然不可能返回一个引用,如果参数是const类型的那么就是第一个,如果不是就第二个。

引用值一旦初始化后就不能再更改!即没有const double const&a = 1;只有const double&a = 1;

你既然知道两个const的意义,怎么还会觉得重复呢,完全不是一回事啊。
函数的返回值是const int& ,表明类的实现者禁止类似这样的赋值发生:
f() = 3;而如果函数的返回值是 int& 则f() = 3;允许.
函数体用const修饰,表示此函数不能修改类中的数据成员。
比如类中有个数据成员x,则这样的函数定义const int& f() const { x = 3; }不被允许。