奥古斯丁少爷 发表于 2016-4-3 10:50:55

C++为什么const成员函数的返回类型不能是非const的引用

const 类型的函数不能返回非const类型的引用
这句话的意思是如果你的函数是const类型的,并且要求返回值是类的非const或者非mutable成员变量,返回类型是引用,那么这是错误的。
这是我在网上找到的。

C++primer上写的是不能从const成员函数返回指向类对象的普通引用。

第一个问题是,为什么const类型的函数不能返回非const类型的引用。
第二是,网上找到的范围更大,C++primer仅是说返回类的对象的时候,哪个对。

muyu0096 发表于 2016-4-3 15:33:37

第一个问题,你描述的时候漏了一点,是不能返回非const类型的成员变量引用,注意是成员变量,如果返回的是非成员变量的引用,是可行,例如int& fun(int& n){return n+=m; },这里m是类私有成员变量,而n不是。这是可行的
至于为什么,因为const成员函数的定义就是为了防止成员函数改变成员变量的值,所以从定义上就要求不能改变成员变量的值,所以。。。。
至于,你说的扩大范围,我对那个关键字也不熟悉,但它应该是把const类型变成非const类型,所以应该是对的。
页: [1]
查看完整版本: C++为什么const成员函数的返回类型不能是非const的引用