QAccessibleWidgetV2: de-inline ctors and avoid QString default arg
We should not use defaulted arguments of non-trivial type, because their construction and destruction, even if not passed, is repeated at every call site, producing O(n) executable code. By overloading out-of-line, we execute the same code at runtime, but a) we have only one copy of the arg construction and destruction, in the library, O(1) executable code production, and b) being out-of-line in the library, the compiler can optimize the call to the base class ctor away, if it wants to, because it sees its implementation. Found in API-review. Amends bb2121551c3d7b1af1553710bc211ba0e39b4212. Task-number: QTBUG-98117 Change-Id: Ib6a3b15cc861893797c0445a91691132b21bbf2c Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 79ab9305c1a46e2205ee9be7af7edb78c4483901) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
5f6304b313
commit
7e7f7daa2b
@ -483,6 +483,17 @@ void *QAccessibleWidget::interface_cast(QAccessible::InterfaceType t)
|
||||
|
||||
// QAccessibleWidgetV2 implementation
|
||||
|
||||
QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role,
|
||||
const QString &name)
|
||||
: QAccessibleWidget(object, role, name)
|
||||
{
|
||||
}
|
||||
|
||||
QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role)
|
||||
: QAccessibleWidgetV2(object, role, QString())
|
||||
{
|
||||
}
|
||||
|
||||
QAccessibleWidgetV2::~QAccessibleWidgetV2() = default;
|
||||
|
||||
/*! \reimp */
|
||||
|
@ -67,10 +67,8 @@ class Q_WIDGETS_EXPORT QAccessibleWidgetV2 : public QAccessibleWidget,
|
||||
struct error2045 : QList<QAccessible::Attribute> {};
|
||||
#endif
|
||||
public:
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role = QAccessible::Client,
|
||||
const QString& name = QString())
|
||||
: QAccessibleWidget(object, role, name)
|
||||
{}
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role = QAccessible::Client);
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role, const QString &name);
|
||||
~QAccessibleWidgetV2() override;
|
||||
|
||||
void *interface_cast(QAccessible::InterfaceType t) override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user