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

时间:2013-10-24 01:28:01

标签: c++ boost reference operator-keyword ampersand

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

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

然而,当我试图让增强随机数生成器功能起作用时,我注意到'&'的另一种用法我以前从未见过的人物......也没有关于它的明确文件(至少在网上)。

请注意'&'来自参数mt19937&。

的END OF
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);
这是什么?我假设它在某种程度上被用作参考,但如果我试图把'&amp;'在参数的前面,编译器说这是不可接受的。

任何解释都将不胜感激。

NK。

1 个答案:

答案 0 :(得分: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)之前放置&符号是没有意义的,因为你无法获得类型的地址。