Оператор амперсанда '&' в конце параметра

Я нуб, и это мой первый пост.

Что касается символа '&', я понимаю его общее использование в качестве ссылки, адреса и логического оператора,...

Однако, когда я пытался заставить работать функции генератора случайных чисел, я заметил еще одно использование символа '&', которого я раньше не видел... и нет явной документации по этому поводу (по крайней мере, в Интернете).

Обратите внимание, что под знаком "&" указывается параметр 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) не имеет смысла, потому что вы не можете получить адрес типа.

Другие вопросы по тегам