Use of #39;amp;#39; operator before a function name in C++( 的使用C++中函数名前的运算符)
问题描述
引用定义对象的替代名称.引用类型引用"另一种类型.我们通过编写 &d
形式的声明符来定义引用类型,其中 d
是要声明的名称.
A reference defines an alternative name for an object. A reference type "refers to"
another type. We define a reference type by writing a declarator of the form &d
,
where d
is the name being declared.
接下来是引用不是对象.相反,引用只是已存在对象的另一个名称.所以我们将使用这些引用来通过引用传递参数,以便它直接影响实际参数.
The next thing is a reference is not an object. Instead, a reference is just another name for an already existing object. So we'll use these references to pass the parameter by reference so that it directly effect the actual parameters.
问题:当我们在函数名称之前使用引用 (&
) 会发生什么?
Question:
What happens when we use a reference (&
) before a function name?
我有点困惑,因为在我看来它会返回返回的别名(变量名).还是我错了?.
I'm a little bit confused, as in my opinion it will return the alias of return (variable name). Or am I wrong?.
std::vector<std::string> &split(const std::string &s, char delim,
std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
推荐答案
在 C++ 中,当在函数名之前使用引用符号 (&
) 时函数的声明,它与函数的返回值相关联,意味着该函数将通过引用返回.
In C++, when the ref-sign (&
) is used before the function name in the declaration of a function it is associated with the return value of the function and means that the function will return by reference.
int& foo(); // Function will return an int by reference.
当不在声明上下文中使用时,将引用符号放在函数名称之前会导致调用 address-of 运算符返回函数的地址.这可以用于例如创建一个指向函数的指针.
When not used within a declaration context, putting the ref-sign before a function name results in calling the address-of operator returning the address of the function. This can be used to e.g. create a pointer to a function.
// Some function.
int sum(int a, int b) {
return a + b;
}
int main() {
// Declare type func_ptr_t as pointer to function of type int(int, int).
using func_ptr_t = std::add_pointer<int(int, int)>::type;
func_ptr_t func = ∑ // Declare func as pointer to sum using address-of.
int sum = func(1, 2); // Initialize variable sum with return value of func.
}
在 C 中,&
的唯一用途是用于地址运算符.C 语言中不存在引用.
In C, the only use of &
is for the address-of operator. References does not exist in the C language.
这篇关于'&' 的使用C++中函数名前的运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:'&' 的使用C++中函数名前的运算符
基础教程推荐
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- Windows Media Foundation 录制音频 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01