所以众所周知这段代码并不敏感:
const int foo()
{
int n = // do computation...;
return n;
}
因为无论如何复制“const int”是什么意思?
但是对于像Qt容器一样的隐式共享(COW)类,它又有意义吗?考虑:
const QList<mytype> get_list()
{
QList<mytype> lst;
// do stuff to fill list;
return lst;
}
现在我能做到:
const QList<mytype> mylst = get_list();
由于Qt具有容器的隐式共享,因此它应该可以正常工作,因为return lst
并不真正复制列表的内容,只是增加引用计数,const
确保我无法修改它(如果get_list
由于某种原因想要确保它,或者需要它const
方法本身)。我的想法是否正确?
答案 0 :(得分:1)
和const确保我无法修改它......我的想法是否正确?
我无法理解整个问题。但是,以上部分是不正确的。您只返回该函数的const
值,不强制接收端也是const
。因此,允许从const
删除mylst
,并且它再次可以修改。
/* const */ QList<mytype> mylst = get_list(); // ok! 'mylst' is modifiable