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

代码如下,为什么形参 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;
}
else
shares = n;
share_val = pr;
set_tot();
}

阿晨1998
浏览 675回答 2
2回答

GCT1015

首先来解释 下这里面有 的两个 CONST ,第一个 与 STD::STRING 在一起, 就像 CONST INT 一样,,只不过这里 INT 换成了 STD::STRING 而以,,第二个CONST 表示在 这个GETID 函数 不会对调用者数据造成修改 。MSDN 中的解释 如下:constconst declarationmember-function constWhen 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 引用。
打开App,查看更多内容
随时随地看视频慕课网APP