Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QList::at()返回对常量的引用?_C++_Qt - Fatal编程技术网

C++ QList::at()返回对常量的引用?

C++ QList::at()返回对常量的引用?,c++,qt,C++,Qt,我在文档中定义了这样一个方法 const T & QList::at(int i) const 根据我在上的描述: at返回对常量对象T的引用,并且不修改QList 但如果这个解释是正确的,它将返回一个我不能更改的对象的引用。但是,这是在没有错误传递的情况下编译的(currentTime()修改returnedStation.time属性): 第一个const是指什么,它在返回的T&上有什么限制 第一个常量引用什么,它在返回的T&上有什么限制 在: 您正在创建通过引用从处返回的值的副本

我在文档中定义了这样一个方法

const T & QList::at(int i) const
根据我在上的描述:

at返回对常量对象T的引用,并且不修改QList

但如果这个解释是正确的,它将返回一个我不能更改的对象的引用。但是,这是在没有错误传递的情况下编译的(currentTime()修改returnedStation.time属性):

第一个
const
是指什么,它在返回的
T&
上有什么限制

第一个常量引用什么,它在返回的T&上有什么限制

在:

您正在创建通过引用从
处返回的值的副本,并且正在修改该副本。不是列表中的对象


那么我的解释是正确的?如何更改Qlist中的确切对象

要修改列表的实际对象,您需要使用:

T& operator[](int)
相反:

list[x] = y;
第一个常量引用什么,它在返回的T&上有什么限制

在:

您正在创建通过引用从
处返回的值的副本,并且正在修改该副本。不是列表中的对象


那么我的解释是正确的?如何更改Qlist中的确切对象

要修改列表的实际对象,您需要使用:

T& operator[](int)
相反:

list[x] = y;
执行此操作时:

T referenceToReturnedObject = myQlist.at(1);
referenceToReturnedObject1
是从值返回的引用中复制的副本。你可以做任何你想做的事来复制这本书

如果你想要推荐人,你必须说

const T& referenceToReturnedObject = myQlist.at(1);
如果您想要一个非常量引用

T& referenceToReturnedObject = myQlist[1];
或者只是

myQlist[1].someNonConstMethod();
执行此操作时:

T referenceToReturnedObject = myQlist.at(1);
referenceToReturnedObject1
是从值返回的引用中复制的副本。你可以做任何你想做的事来复制这本书

如果你想要推荐人,你必须说

const T& referenceToReturnedObject = myQlist.at(1);
如果您想要一个非常量引用

T& referenceToReturnedObject = myQlist[1];
或者只是

myQlist[1].someNonConstMethod();

什么是
returnedStation
以及它与问题的关系如何?什么是
returnedStation
以及它与问题的关系如何?嗯,我在文档中没有找到
QList::at()
函数的
非常量版本。所以我的解释是正确的?如何更改Qlist中的确切对象?@Alan,使用
运算符[]
。使用
[]
而不是
at()
的唯一大问题是,使用
[]
时不会进行越界检查。因此,开发人员必须手动确保使用的索引在给定列表的允许范围内。嗯,我在文档中找不到
QList::at()
函数的
non-const
版本。那么我的解释正确吗?如何更改Qlist中的确切对象?@Alan,使用
运算符[]
。使用
[]
而不是
at()
的唯一大问题是,使用
[]
时不会进行越界检查。因此,开发人员必须手动确保使用的索引在给定列表的允许范围内。