Qt-这是通过引用传递的吗

Qt - Is this pass by reference?

本文关键字:引用 Qt-      更新时间:2023-10-16

如果我们在Qt中写入以下内容作为函数的参数:QString &tableName

这是否意味着我们只是参考?

谢谢。

严格来说,这是一个函数参数,而不是函数argument。参数是在函数的参数列表中声明的变量;参数是由调用函数传递给函数的值。因此参数QString &tableName是通过引用传递的。但作为函数自变量,&tableName的意思是"tableName的地址"。

更新:根据要求,这里有一个代码示例来澄清区别:

void f (double y) ;
f (99.0) ;

double y是一个参数声明;它类似于一个变量声明。CCD_ 7是一个函数参数。

99.0是函数自变量;它是一个表达式,必须可转换为类型double

是的,这在C++中是通过引用传递的。如果您不想意外更改tableName,也可以编写QString const & tableName

是。提示:如果你不想更改,请将其设为const

请注意,与大多数非平凡的Qt基本类型一样,QString是一个实现"写时复制"语义的轻量级容器对象。因此,通过引用传递一个的唯一原因是,如果您的函数想要修改调用方的副本,并且从来没有任何理由通过const引用传递(除非您对Qt了解不多)。