加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 我不了解std :: shared_ptr的 – >运算符

发布时间:2020-12-16 10:34:10 所属栏目:百科 来源:网络整理
导读:我似乎无法绕过它. – std :: shared_ptr的operator,只返回一个指向该成员的指针(假设它是一个类的实例),但同时它可以用来调用方法……怎么样?我们没有对 – 返回的指针做任何事情.操作符.我们如何调用方法和访问实例变量?如果我有一些功能相同的东西,比如
我似乎无法绕过它. – > std :: shared_ptr的operator,只返回一个指向该成员的指针(假设它是一个类的实例),但同时它可以用来调用方法……怎么样?我们没有对 – >返回的指针做任何事情.操作符.我们如何调用方法和访问实例变量?如果我有一些功能相同的东西,比如

T* Get() {
    return &t;
}

在std :: shared_ptr中(是的,我确实知道有一个get()方法),为什么我不能写:

someSharedPtr.Get()SomeMethod()

这基本上是什么

someSharedPtr->SomeMethod()

正在做…我很困惑.如何返回指针替代像 – > – >这样的东西或operator->() – >句法?

解决方法

How can returning a pointer substitute for something like ->-> or operator->()-> syntax?

因为标准是这样说的.

13.5.6 [over.ref]定义了一个重载的运算符 – >做正确的事:

An expression x->m is interpreted as (x.operator->())->m for a class object x of type T if T::operator->() exists and if the operator is selected as the best match function by the overload resolution mechanism (13.3).

如果它不这样做,那么你就无法实现类似于指针的类型,并且具有x-> m的通常语义,用户期望从类似指针的类型.所以语言说它是什么,做其他事情会使重载运算符 – >远不那么有用.

这实际上允许您将调用链接到operator->到任意深度,如果你有一个类似指针的类型,返回类似指针的类型,返回类似指针的类型等,直到最后一些东西返回一个真正的指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读