1
31
“&”表示引用,而不是指向对象的指针(在您的情况下是常量引用)。 具有某种功能的优势,如
结束
在前一种情况下,您保证MyNess是非空的,因为C++不允许空引用。因为您是通过引用传递的,所以不会复制对象,就像传递指针一样。 第二个例子:
将允许您返回对成员变量(例如)的常量引用。如果不希望返回副本,并且再次确保返回的值不为空,则此选项非常有用。例如,下面允许您直接、只读访问:
当然,您必须小心不要返回无效的引用。 编译器很乐意编译以下内容(取决于警告级别和如何处理警告)
基本上,您有责任确保返回引用的内容实际上是有效的。 |
2
17
在这里,
|
3
6
string*和string&有两种不同。首先,指针指向数据的地址位置。参考点指向数据。如果您具有以下功能:
您必须签入函数声明,以确保param1指向有效的位置。比较:
在这里,调用者有责任确保指向的数据是有效的。不能传递“null”值,例如,在上面的第二个函数中。 关于第二个问题,关于方法返回值作为引用,请考虑以下三个函数:
在第一种情况下,您将返回对数据的引用。如果函数声明如下所示:
您可能会遇到一些编译器错误,因为您返回的是对该函数在堆栈中初始化的字符串的引用。在函数返回时,该数据位置不再有效。通常,您希望返回对类成员的引用或类似的内容。 上面的第二个函数返回实际内存中的指针,因此它将保持不变。不过,您必须检查空指针。 最后,在第三种情况下,返回的数据将被复制到调用方的返回值中。所以如果你的功能是这样的:
你会没事的,因为字符串“hello”会被复制到函数的返回值中,可以在调用者的内存空间中访问。 |
4
1
查看C++中的(引用)运算符的一种方法是,它仅仅是指向指针的语法糖。例如,以下是 粗略地 当量:
更有用的是在处理类时,使方法从x->bar()转换为x.bar()。 我说的原因 粗略地 使用引用会对您可以对引用执行的操作施加额外的编译时限制,以防止在处理指针时出现某些问题。例如,您不能意外地更改指针,或以任何方式使用指针,而不是引用已传递的单数对象。 |
5
1
这是几项无效代码。通过g++运行它可以得到:
代码的有效版本为:
这里所发生的是,您正在向函数传递一个变量“原样”。这大致相当于:
但是,将引用传递给函数可以确保不能使用引用执行指针算术之类的操作。例如:
无效。 如果你 必须 使用指向引用的指针,必须显式执行以下操作:
它在测试运行时提供(如预期的)垃圾输出:
|
6
1
您的函数声明了一个常量 参考 字符串:
引用具有一些特殊的属性,这使得它在许多方面更安全地替代指针:
有几个不同之处,因为第一个直接引用一个对象,而
处理参数时的主要区别在于不需要取消引用
做同样的事情。在这种情况下,唯一的区别是您不需要取消引用
这将返回对字符串的常量引用。所以调用者可以直接访问返回的变量,但只能从只读的意义上访问。这有时用于返回字符串数据成员,而不分配额外的内存。 有一些微妙的参考-看看 C++ FAQ on References 更多细节。 |
7
0
在这种背景下
|
tomm · 谷歌表格-将两列相乘,复制第三列 2 年前 |
ziemsterr · 无法在SQL SELECT语句中找出此语法错误 2 年前 |
Andrés BolÃvar · AJAX请求未收到我想要的属性 2 年前 |
clarkk · 当声明向量时,(1)是什么意思? 2 年前 |
Mike C. · Bash错误[:检查文件是否存在时缺少“]” 2 年前 |
michael · 错误的脚本和语法问题 2 年前 |