Оператор амперсанда '&' в конце параметра
Я нуб, и это мой первый пост.
Что касается символа '&', я понимаю его общее использование в качестве ссылки, адреса и логического оператора,...
Однако, когда я пытался заставить работать функции генератора случайных чисел, я заметил еще одно использование символа '&', которого я раньше не видел... и нет явной документации по этому поводу (по крайней мере, в Интернете).
Обратите внимание, что под знаком "&" указывается параметр END OF mt19937&.
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);
Что это? Я предполагаю, что он как-то используется в качестве ссылки, но если я попытаюсь поставить '&' перед параметром, компилятор скажет, что это недопустимо.
Любое объяснение будет оценено.
NK.
1 ответ
Амперсанд перед переменной дает вам адрес этой переменной
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
) не имеет смысла, потому что вы не можете получить адрес типа.