使用“&”在函数调用中,困惑

时间:2014-01-10 14:28:52

标签: c++ pointers

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”的写作相同吗?

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

4 个答案:

答案 0 :(得分:3)

你是正确的,在变量/参数声明中,&符号(&)表示“引用”。在函数参数的上下文中,它等同于“按引用传递”。

C ++并不关心空白。它允许您在各种符号/运算符之前和/或之后放置空格,例如&符号。它可以区分标识符(例如类型和变量名称),因为标识符只能包含字母数字和下划线。这意味着这些都直接相同:

QModelIndex& parent;
QModelIndex &parent;
QModelIndex & parent;

答案 1 :(得分:1)

  

使用“&”在“& parent”和“& index”中的意思是“传递参考”?

  

如果是这样,为什么“&”就在“父母”之前,在“索引”之前有一个空格?

因为有些人把空间放在不同的地方给别人。它不会影响意义。

  

这些与“QModelIndex& parent”的写作相同吗?

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

答案 2 :(得分:1)

在这样的情况下,空间永远不会重要,C ++几乎总是忽略空格。

所以是的,那将是相同的:两者都会声明这些参数是引用。

答案 3 :(得分:1)

  

使用“&”在“& parent”和“& index”中的意思是“传递参考”?

是肯定的。

  

如果是这样,为什么“&”就在“父母”之前,“指数”之前有一个空格?

& index名为&index

  

这些与将它作为“QModelIndex& parent”写成一样吗?