所以众所周知,这段代码是不合理的:
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
方法本身)。我的想法在这里正确吗?