关于运算符重载->的问题
c++吧
全部回复
仅看楼主
level 13
凝戈🍺
楼主
调用该函数的返回值究竟是什么,他应该接受什么参数,c++ primer上说的看不明白
2014年06月24日 12点06分
1
level 12
l-zh
不接受参数,返回值为指针
2014年06月24日 12点06分
2
凝戈🍺
不接收参数的话,那使用的时候后面接的是类的某个成员,就直接就能用了?主要是这点比较困扰
2014年06月24日 12点06分
l-zh
回复 time是你爹 :c++为了重载->,将例如p->set(5)解释为类似(*p.operator->())->set(5)的形式,operator->返回一个指针就行了。
2014年06月24日 13点06分
凝戈🍺
回复 清明雨上1019 :原来是规定,怪不得比较难理解,非常感谢,解决了我的困扰
2014年06月24日 13点06分
凝戈🍺
回复 清明雨上1019 :
c++primer上写能重载*是和->一起讲的
2014年06月24日 13点06分
level 13
z什么什么k
template<typename T> T* shared_ptr<T>::operator->() const;
2014年06月24日 12点06分
3
凝戈🍺
这好像在C++ reference上的但是我有疑问的是不接收参数的话,那使用的时候后面接的是类的某个成员,就直接就能用了?主要是这点比较困扰
2014年06月24日 12点06分
z什么什么k
回复
@time是你爹
:对于shared_ptr<T> a;a->b等价于( a.operator->() )->b……
2014年06月24日 12点06分
凝戈🍺
回复 zjfaok :也就是C++语言已经定义了这种行为,只要是类似于a->b这种结构的expression,会不断对返回值重复解引用,直到非指针值
2014年06月24日 13点06分
z什么什么k
回复
@time是你爹
:这是一个特殊的规定……
2014年06月24日 13点06分
1