我是编程新手,刚开始学习 C++ 几周,我目前正在做随机数的事情,但我不明白为什么参数有时有“()”有时没有,希望有人能解释一下我,谢谢!.
int main()
{
random_device rd;
mt19937 rdn(rd()); //Why this parameter needs "()"?
uniform_int_distribution<int> maxrd(1, 5000);
int n = maxrd(rdn); //And why this parameter doesn't need "()"?
cout << n;
};
最佳答案
案例1
mt19937 rdn(rd());
在上述声明中,rd()
使用(调用)重载的 std::random_device::operator()
然后将其返回值用作 mt19937
的参数的构造函数。
基本上是括号()
用于调用 operator()
的std::random_device
。也就是说,这里的括号 ()
rd
之后那里是因为我们想要传递 rd()
的返回值作为参数而不是 rd
本身。
案例2
int n = maxrd(rdn);
在上面的语句中,我们调用 std::uniform_int_distribution::operator()
这需要 Generator
作为参数,所以我们传递 rdn
作为自 rdn
以来的参数已经是一个生成器了。
请注意,我们不使用()
之后rdn
因为我们想通过rdn
作为参数,而不是 rdn()
的返回值.
关于c++ - 将类作为参数传递c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73216135/