【问题标题】:Assign function as default parameter using & operator使用 & 运算符将函数分配为默认参数
【发布时间】:2021-05-28 04:28:17
【问题描述】:

我正在研究在 Qt 中的 QML 表中设置信息的示例,但我不明白作为默认参数传递的内容:

int rowCount(const QModelIndex & = QModelIndex()) const override
{
    return 200;
}

例子的来源可以在here找到。

我的猜测是const QModelIndex & = QModelIndex()表示默认参数是对函数QModelIndex()的引用,这是一个内联函数。它是否正确?有人可以向我解释一下这里发生了什么吗?

【问题讨论】:

  • 默认构造的QModelIndex对象。
  • 如果你想知道为什么要在它不使用的时候这样做,它是为了符合一些抽象接口。 QModelIndex 是一个类型,所以 QModelIndex() 必须是默认构造的 QModelIndex 对象,const& 参数可以绑定到右值。
  • 由于QModelIndex 是一种类型,QModelIndex() 使用其默认构造函数创建该类型的对象。 如果 QModelIndex 是一个函数,QModelIndex() 将不是指该函数,而是指调用它的结果。
  • 谢谢大家,我现在明白了。

标签: c++ qt qml function-definition


【解决方案1】:

如cmets中所述:

int rowCount(const QModelIndex & = QModelIndex()) const override

定义了被覆盖的成员函数rowCount,它的一个未命名参数的默认值为QModelIndex()。对于任何类型的TT::T() 定义了它的默认构造函数,所以QModelIndex() 是一个默认构造的QModelIndex 对象。这种定义未命名成员函数参数的模式是从抽象接口派生的常见做法,其中重写实现对参数没有用处。

【讨论】:

  • 我接受这个,它解释得很好并且扩展了 cmets。
猜你喜欢
  • 2018-04-28
  • 2011-03-27
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多