c++ 类中对象的引用

麻烦各位高手解释下这行代码中的引用的用法constStock&topval(constStock&s)const其中Stock是类名,topval是该类下的一个成员函数,... 麻烦各位高手解释下这行代码中的引用的用法

const Stock & topval (const Stock & s) const

其中Stock是类名,topval是该类下的一个成员函数,s则是一个Stock类的形参。

这是c++ primer plus 第4版中的代码,我不懂这行代码的作用及引用的用法,麻烦解释下,如果能给出引用的具体解释链接什么的就更好啦~
展开
 我来答
蝴蝶爱手绘
高粉答主

推荐于2017-09-26 · 爱手绘/爱生活/爱手工
蝴蝶爱手绘
采纳数:13047 获赞数:92964

向TA提问 私信TA
展开全部
  引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;
  引用说明:
  (1)&在此不是求地址运算,而是起标识作用。
  (2)类型标识符是指目标变量的类型。
  (3)声明引用时,必须同时对其进行初始化。
  (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
  int a=2,int &ra=a;
  a为目标原名称,ra为目标引用名。给ra赋值:ra=1; 等价于 a=1;
  (5)对引用求地址,就是对目标变量求地址。&ra与&a相等。即我们常说引用名是目标变量名的一个别名。别名一词好像是说引用不占据任何内存空间。但是编译器在一般将其实现为const指针,即指向位置不可变的指针。即引用实际上与一般指针同样占用内存。
  (6)不能建立引用的数组。因为数组是一个由若干个元素所组成的集合,所以无法建立一个由引用组成的集合。但是可以建立数组的引用.
  例如: int& ref [3]= {2,3,5};//声明ref引用的数组错误
  但是可以这样写:
  const int (&ref)[3] ={2,3,5}; //gcc编译的时候加上选项 -std=c++0x
  ref[0] = 35; //错误
  为什么要加上const ,因为{2,3,5}此时是个字面值数组,是保存在代码段里,只读的属性,如果不加,编译错误,而且后面对ref[0]的赋值也不会成功.
  需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词。因此,当下面的语句执行后:
  pt1.offset(12,12);
  pt1和pt2都具有(12,12)的值。
  引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才
  初始化它。例如下面语句是非法的:
  Point &pt3;
  pt3=pt1;
  那么既然引用只是某个东西的同义词,它有什么用途呢?
  下面讨论引用的两个主要用途:作为函数参数以及从函数中返回左值。
野林古风
2015-10-25 · TA获得超过3637个赞
知道大有可为答主
回答量:3655
采纳率:69%
帮助的人:707万
展开全部
这行代码的意思是:创建一个名叫topval的函数,该函数返回值是一个const类型的Stock的对象,引用的参数也是const 的,并且该函数 也是const 类型的,在程序执行过程中任何对返回值,或参数作出修改都不会通过。

这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误

const 对象只能通过const 的函数访问;

你看deitel的教程,对类似这个函数的用法有详细的解释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2010-04-20 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4445万
展开全部
& 的语法意义根据位置的不同而有差别

在函数原型声明里面 & 是指这个变量是引用传递的

在变量声明里面 & 的意思是声明一个别名

在其它语句里面 & 的意思是取地址

这里是第一种情况, 就是指引用传递, 也没更多可解释的, 关键是不要跟其他的搞混了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jeak_yang
推荐于2017-10-03 · TA获得超过469个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:173万
展开全部
这行代码的意思是:创建一个名叫topval的函数,该函数返回值是一个const类型的Stock的对象,引用的参数也是const 的,并且该函数 也是const 类型的,在程序执行过程中任何对返回值,或参数作出修改都不会通过。

这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误

const 对象只能通过const 的函数访问;

你看deitel的教程,对类似这个函数的用法有详细的解释
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-04-12
展开全部
这本书的255页有关于这个的讲解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式