为了账号安全,请及时绑定邮箱和手机立即绑定

C++编程问题请大神赐教谢谢

C++编程问题请大神赐教谢谢

C++
阿晨1998 2018-10-29 14:14:17
代码如下,为什么形参 const std::string & co 要用引用,直接const std::string co 不行吗,company = co,不是一样吗?void stock::acquire(const std::string & co, long n, double pr) {company = co;if (n < 0) {std::cout << "Number of shares can't be negative;"<< company << "shares set to 0.\n";shares = 0;}elseshares = n;share_val = pr;set_tot();}
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

首先来解释 下这里面有 的两个 CONST ,第一个 与 STD::STRING 在一起, 就像 CONST INT 一样,,只不过这里 INT 换成了 STD::STRING 而以,,第二个CONST 表示在 这个GETID 函数 不会对调用者数据造成修改 。MSDN 中的解释 如下:
const
const declaration
member-function const
When modifying a data declaration, the const keyword specifies that the object or variable is not modifiable. When following a member function's parameter list, the const keyword specifies that the function doesn't modify the object for which it is invoked.
然后再来说下 引用:在C++ PRIMER 4 里面有 跟下面 差不多的话,
CONST引用与非CONST引用

我们可以定义变量如:
INT I=10; 同理可以定义其引用如:
INT & REFI=I; (1) 这样,我们就可以操纵这个引用了,可以通过REFI 来修改I 的值。

通过上面的例子,我们要明白,非CONST引用可以修改它绑定的值。
同理:
我们可以定义CONST对象如:
CONST INT I=10;
同理我们可以定义引用来绑定到这个CONST对象 如:
INT & REFI =I;(2)
比较(1)(2)两个表达式,是一样的,也就是说在表达式(2) 定义完之后,我们同样可以通过REFI 改变 I的值。这与我们的I 被定义成 CONST 是相违背的。所以我们规定:
将非CONST引用绑定到CONST对象是不合法的。
CONST引用可以初始化为不同类型的对象或者右值,如字面值常量。

非CONST引用只能绑定到与该引用同类型的对象。
CONST引用则可以绑定到不同但相关的类型的对象或绑定到右值。

以上部分摘自C++ PRIMER 4

解释了引用 CONST引用 与 非CONST引用

所以 说 还是要 仔细的看书,,,

你这里面的 & 表示 的是 引用 。而且 是 CONST 引用。


查看完整回答
反对 回复 2018-11-03
  • 2 回答
  • 0 关注
  • 672 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信