参数末尾的&符号'&'运算符

NK2*_*013 3 c++ boost reference ampersand operator-keyword

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

关于'&'字符,我理解它作为参考,地址和逻辑运算符的一般用法,......

然而,当我试图让增强随机数生成器函数起作用时,我注意到我之前没见过的'&'字符的另一种用法......也没有关于它的明确文档(至少在网上).

注意下面的'&'出现在END参数mt19937&.

boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);
Run Code Online (Sandbox Code Playgroud)

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

任何解释将不胜感激.

NK.

Dav*_*own 7

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

int a = 3;
std::cout << &a << std::endl; // 0x12345678 or similar
Run Code Online (Sandbox Code Playgroud)

类型后的&符号使其成为引用类型

int& b = a;
std::cout << b << std::endl; // 3
a = 4;
std::cout << b << std::endl; // 4
Run Code Online (Sandbox Code Playgroud)

boost::mt19937是一个类型,所以boost::mt19937&是一个引用类型boost::mt19937.将&符号放在before(&boost::mt19937)之后没有意义,因为你无法获得类型的地址.