gpt4 book ai didi

c++ - 为什么QSharedPointer类中没有重载运算符T*()

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:23 24 4
gpt4 key购买 nike

但是,QSharedDataPointer 类拥有它。

为了简短起见,我总是必须定义一个 Class::pointer typedef 并使用 Class::pointer(new Class) 创建一个指针.

有人知道这是怎么回事吗?

最佳答案

我怀疑 T* () 运算符不存在的原因是因为有 T* data() function与许多其他 Qt 类(如 QString、QByteArray 等)一样,它都提供了一个 data() 函数来访问 Qt 类的底层数据。

这维护了跨 Qt 类的标准接口(interface)。

此外,通过重载运算符,如果要更改基础数据而未在此处意识到,则很容易出错。在我看来,使用 data() 函数会使您在做什么更加明显。

data() QSharedPointer 的函数也警告不要删除返回的指针,或将它传递给任何可以删除它的东西,所以我将它视为一个函数,如果你真的需要它,它就在那里,但如果你能避免它并且如果你确实使用它会更好仔细想想发生了什么。

至于QSharedDataPointer,根据the documentation,在这里调用接线员调用 detach() ,可以安全调用。

关于c++ - 为什么QSharedPointer类中没有重载运算符T*(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com