c++ - 将类作为参数传递c++

标签 c++

我是编程新手,刚开始学习 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/

相关文章:

C++:如何读取大文本文件并更快地保存到数组

c++ - 如何用比较函数初始化集合映射?

c++ - 什么时候不在头文件中使用包含保护?

c++ - 在 C++ 中,赋值的一侧是否先于另一侧排序?

c++ - 确定函数的复杂性(大 O 表示法)

c++ - C/C++ : Static function in header file, 是什么意思?

c++ - 是否可以在 ARC 中使用 native C++ 代码?

c++ - 是否需要释放 pin_ptr 还是自动完成?

c++ - 是否可以在数组中存储 1000 万个数字?

c++ - 在初始化列表的上下文中缩小的奇怪行为