类成员函数返回值前面的const限定符问题

Golden_Shadow 2011-10-01 12:06:47
请看代码:
//	C++ Primer.cpp
#include "stdafx.h"
#include <iostream>

class Example
{
private:
int m_val ;
public:
Example (int val): m_val(val) {}
// 此处的const限定的是什么?
const int & val (void)
{
return m_val ;
}
} ;

int main (void)
{
Example example(10) ;
int val = example.val() ;
// 我认为既然example.val()的返回类型为const int &, val引用这个返回值之后,就无法更改自己了.
// 事实上可以.为什么?
std ::cout << ++val << std ::endl ;
std ::cout << example.val() << std ::endl ;

std ::cin.get() ;

return 0 ;
}

关于这个问题想不通,望大侠赐教.
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazy_2010 2011-10-01
  • 打赏
  • 举报
回复
int val = example.val();

相当于

const int& temp = example.val();
int val = temp;
gw_net 2011-10-01
  • 打赏
  • 举报
回复
只是返回值不能做做左值

64,675

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧