[英]return const auto object — and Qt implicit sharing
因此,众所周知此代码并不明智:
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
并不会真正复制list的内容,只是增加refcount,而const
确保我无法修改它(如果get_list
出于某种原因想要确保它,或需要将其作为const
方法本身)。 我的想法在这里正确吗?
和const确保我无法对其进行修改...我的想法在这里正确吗?
我无法理解整个问题。 但是,以上部分是不正确的。 您只从函数返回一个const
值,它并不要求接收方也必须是const
。 因此,允许从mylst
删除const
,并且它再次变为可修改的。
/* const */ QList<mytype> mylst = get_list(); // ok! 'mylst' is modifiable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.