c – 我不了解std :: shared_ptr的 – >运算符
我似乎无法绕过它. – > std :: shared_ptr的operator,只返回一个指向该成员的指针(假设它是一个类的实例),但同时它可以用来调用方法……怎么样?我们没有对 – >返回的指针做任何事情.操作符.我们如何调用方法和访问实例变量?如果我有一些功能相同的东西,比如
T* Get() { return &t; } 在std :: shared_ptr中(是的,我确实知道有一个get()方法),为什么我不能写: someSharedPtr.Get()SomeMethod() 这基本上是什么 someSharedPtr->SomeMethod() 正在做…我很困惑.如何返回指针替代像 – > – >这样的东西或operator->() – >句法? 解决方法
因为标准是这样说的. 13.5.6 [over.ref]定义了一个重载的运算符 – >做正确的事:
如果它不这样做,那么你就无法实现类似于指针的类型,并且具有x-> m的通常语义,用户期望从类似指针的类型.所以语言说它是什么,做其他事情会使重载运算符 – >远不那么有用. 这实际上允许您将调用链接到operator->到任意深度,如果你有一个类似指针的类型,返回类似指针的类型,返回类似指针的类型等,直到最后一些东西返回一个真正的指针. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |