3

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

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

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

注意下面的“&”出现在 END OF 参数 mt19937& 中。

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

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

任何解释将不胜感激。

NK。

4

1 回答 1

7

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

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) 之前没有意义,因为您无法获取类型的地址。

于 2013-10-24T01:33:09.653 回答