繁体   English   中英

返回const auto对象-和Qt隐式共享

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM