c++ 类中对象的引用
麻烦各位高手解释下这行代码中的引用的用法constStock&topval(constStock&s)const其中Stock是类名,topval是该类下的一个成员函数,...
麻烦各位高手解释下这行代码中的引用的用法
const Stock & topval (const Stock & s) const
其中Stock是类名,topval是该类下的一个成员函数,s则是一个Stock类的形参。
这是c++ primer plus 第4版中的代码,我不懂这行代码的作用及引用的用法,麻烦解释下,如果能给出引用的具体解释链接什么的就更好啦~ 展开
const Stock & topval (const Stock & s) const
其中Stock是类名,topval是该类下的一个成员函数,s则是一个Stock类的形参。
这是c++ primer plus 第4版中的代码,我不懂这行代码的作用及引用的用法,麻烦解释下,如果能给出引用的具体解释链接什么的就更好啦~ 展开
展开全部
引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(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;
那么既然引用只是某个东西的同义词,它有什么用途呢?
下面讨论引用的两个主要用途:作为函数参数以及从函数中返回左值。
引用说明:
(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;
那么既然引用只是某个东西的同义词,它有什么用途呢?
下面讨论引用的两个主要用途:作为函数参数以及从函数中返回左值。
展开全部
这行代码的意思是:创建一个名叫topval的函数,该函数返回值是一个const类型的Stock的对象,引用的参数也是const 的,并且该函数 也是const 类型的,在程序执行过程中任何对返回值,或参数作出修改都不会通过。
这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误
const 对象只能通过const 的函数访问;
你看deitel的教程,对类似这个函数的用法有详细的解释
这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误
const 对象只能通过const 的函数访问;
你看deitel的教程,对类似这个函数的用法有详细的解释
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
& 的语法意义根据位置的不同而有差别
在函数原型声明里面 & 是指这个变量是引用传递的
在变量声明里面 & 的意思是声明一个别名
在其它语句里面 & 的意思是取地址
这里是第一种情况, 就是指引用传递, 也没更多可解释的, 关键是不要跟其他的搞混了
在函数原型声明里面 & 是指这个变量是引用传递的
在变量声明里面 & 的意思是声明一个别名
在其它语句里面 & 的意思是取地址
这里是第一种情况, 就是指引用传递, 也没更多可解释的, 关键是不要跟其他的搞混了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这行代码的意思是:创建一个名叫topval的函数,该函数返回值是一个const类型的Stock的对象,引用的参数也是const 的,并且该函数 也是const 类型的,在程序执行过程中任何对返回值,或参数作出修改都不会通过。
这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误
const 对象只能通过const 的函数访问;
你看deitel的教程,对类似这个函数的用法有详细的解释
这个主要是让你了解const的用法,如果一个参数被标定为const 则任何函数对他的修改都会引起一个编译错误
const 对象只能通过const 的函数访问;
你看deitel的教程,对类似这个函数的用法有详细的解释
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-04-12
展开全部
这本书的255页有关于这个的讲解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询