Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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将如何运行_C++_Qt_Deep Copy_Qtcore_Qlist - Fatal编程技术网

C++ 当通过值传递时,包含指针的QList将如何运行

C++ 当通过值传递时,包含指针的QList将如何运行,c++,qt,deep-copy,qtcore,qlist,C++,Qt,Deep Copy,Qtcore,Qlist,假设您的QList包含指针QList,并将其传递给一个带有签名的方法void doCoolStuff(QList)这样一个调用的空间和时间含义是什么 我的猜测是会有一些开销,因为将创建QList对象的副本,但是我们不需要进行深度复制,因为我们正在处理指针 < >行为的一个不同之处在于,如果代码> doCultsSoS/对列表进行修改,原始列表将保持不变。 您编写的是对C++的正确,但是 >qList,在其他一些QT类中,在这方面有点特殊。是的,又名。那是什么意思 对您的解释的唯一补充是,如果您不

假设您的QList包含指针
QList
,并将其传递给一个带有签名的方法
void doCoolStuff(QList)
这样一个调用的空间和时间含义是什么

我的猜测是会有一些开销,因为将创建QList对象的副本,但是我们不需要进行深度复制,因为我们正在处理指针


< >行为的一个不同之处在于,如果代码> doCultsSoS/<代码>对列表进行修改,原始列表将保持不变。

您编写的是对C++的正确,但是 >qList,在其他一些QT类中,在这方面有点特殊。是的,又名。那是什么意思

对您的解释的唯一补充是,如果您不打算修改方法或函数体中的列表,那么您的列表将是隐式共享的,这意味着共享数据指针将只是额外的空间约束

如果您打算修改函数或方法体中的列表,那么将为该列表创建一个深度副本。当然,您的指针仍然会被简单地复制,因为它们是指针


至于时间维度,通过对此类隐式使用此技术,如果不进行任何修改,您可以腾出时间复制列表。

您是否理解Qt中的COW,aka?顺便说一句,我没有投反对票,只是问一下。我从来没听说过这个词。。。我对Qt很陌生。。。但我会看一看,好吧,基本上,如果你不修改函数中的列表,这只是额外的指针空间开销。否则,该列表将被复制。我不确定你是否需要担心这里的时间。我给了一个+1来补偿毫无理由的否决票。我不喜欢那些。