函数调用中“&”的用法,令人困惑

Usage of "&" in function calls, confused

本文关键字:用法 函数调用      更新时间:2023-10-16

新手到C,C++和QT。

我理解"&"用于检索指针指向的地址位置的用法,但我正在经历一些C++的例子,我看到以下内容:

int rowCount(const QModelIndex &parent = QModelIndex()) const ;
bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
"&parent"和"&

index"中"&"的用法是否意味着"按引用传递"?

如果是这样,那么为什么"&"在"父"之前,而在"索引"之前有一个空格?

这些是否与"QModelIndex&parent"相同?

感谢您的帮助。 语法可能相当混乱。

您是正确的,在变量/参数声明中,与号 (&) 表示"引用"。在函数参数的上下文中,这等同于"按引用传递"。

C++不太在乎空格。它允许您在各种符号/运算符(例如与号)之前和/或之后放置空格。它可以将它们与标识符(例如类型和变量名称)区分开来,因为标识符中只能包含字母数字和下划线。这意味着这些都是直接等效的:

QModelIndex& parent;
QModelIndex &parent;
QModelIndex & parent;
"&parent"和"&

index"中"&"的用法是否意味着"按引用传递"?

是的。

如果是这样,那么为什么"&"在"父"之前,而在"索引"之前有一个空格?

因为有些人把空间放在与其他人不同的地方。它不影响含义。

这些是否与"QModelIndex&parent"相同?

它们与const QModelIndex& parent相同。空格不会影响含义,但 const 限定符指定函数不能(合法地)修改对象。

在这种情况下,空格从不重要,C++几乎总是忽略空格。

所以是的,这将是相同的:两者都会声明参数是参考。

"&parent"和"&

index"中"&"的用法是否意味着"按引用传递"?

是的。

如果是这样,那么为什么"&"在"父"之前,而在"索引"之前有一个空格?

& index&index相同

这些是否与"QModelIndex&parent"相同?

是的。