c++ - & 符号 '&' 参数末尾的运算符

标签 c++ boost reference operator-keyword ampersand

我是菜鸟,这是我的第一篇文章。

关于“&”字符,我理解它作为引用、地址和逻辑运算符的一般用法,...

然而,当我试图让 boost 随机数生成器函数工作时,我注意到我以前从未见过的 '&' 字符的另一种用法......也没有关于它的明确文档(在网络上位于最少)。

请注意,“&”下方出现在 END OF 参数 mt19937& 处。

boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);

这是什么?我假设它以某种方式用作引用,但如果我尝试将“&”放在参数的前面,编译器会说这是 Not Acceptable 。

如有任何解释,我们将不胜感激。

拒绝。

最佳答案

变量前的符号为您提供该变量的地址

int a = 3;
std::cout << &a << std::endl; // 0x12345678 or similar

类型后的符号表示该类型是引用类型

int& b = a;
std::cout << b << std::endl; // 3
a = 4;
std::cout << b << std::endl; // 4

boost::mt19937 是一个类型,所以 boost::mt19937& 是对 boost::mt19937 的引用类型。在 (&boost::mt19937) 之前放置 & 号没有意义,因为您无法获取类型的地址。

关于c++ - & 符号 '&' 参数末尾的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555289/

相关文章:

c++ - 停止函数隐式转换

Perl:将巨大字符串列表传输到子例程而不复制它们

C++:混合:boost::any + typeid + pointer:克隆 'generic' 值,如果它是一个指针

c++ - 如何使用 CMake 在 ubuntu 上找到已安装的 Boost 库?

c++ - 用 boost::assign::list_of 初始化一个 std::vector<std::vector<int>>

sql - 标准的SQL关键字?

c++ - const 引用转换为非常量后的行为

c++ - 需要帮助在充满用户输入的 vector 中搜索最小值

c++ - 为什么将静态类内初始化成员传递给采用 const 引用的函数需要该成员具有定义?

c++ - 如何将字符串放入整数数组c++