3

私は初心者で、これが私の最初の投稿です。

「&」文字に関しては、参照、アドレス、および論理演算子としての一般的な使用法を理解しています...

ただし、ブースト乱数ジェネレーター関数を機能させようとしていたときに、これまでに見たことのない「&」文字の別の使用法に気付きました... また、それに関する明示的なドキュメントも (少なくとも Web 上には) ありません。

以下の '&' は END OF パラメータ mt19937& にあることに注意してください。

boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);

これは何ですか?なんらかの参照として使用されていると想定していますが、パラメーターの前に「&」を付けようとすると、コンパイラーは受け入れられないと言います。

説明をいただければ幸いです。

NK。

4

1 に答える 1

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型のアドレスを取得できないため、( ) の前にアンパサンドを付けても意味がありません。

于 2013-10-24T01:33:09.653 に答える