我是菜鸟,这是我的第一篇文章。
关于“&”字符,我理解它作为引用、地址和逻辑运算符的一般用法,...
然而,当我试图让 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/