fre*_*low 15 c++ pointers smart-pointers operator-overloading
如果p->m仅仅是语法糖是不是有意义(*p).m?基本上,operator->我写过的每一个都可以实现如下:
Foo::Foo* operator->()
{
return &**this;
}
Run Code Online (Sandbox Code Playgroud)
在任何情况下,我想要p->m的意思是什么(*p).m?
j_r*_*ker 18
operator->()在返回类型允许的情况下,隐式地重复调用具有奇怪的区别.最明显的方法是使用代码:
struct X {
int foo;
};
struct Y {
X x;
X* operator->() { return &x; }
};
struct Z {
Y y;
Y& operator->() { return y; }
};
Z z;
z->foo = 42; // Works! Calls both!
Run Code Online (Sandbox Code Playgroud)
我记得有一种情况,这种行为是必要的,以使一个对象在类似智能指针的上下文中作为另一个对象的代理,尽管我不记得细节.我记得的是a->b,通过使用这个奇怪的特殊情况,我只能通过使用语法来使行为正常工作; 我找不到(*a).b类似工作的方法.
不确定这会回答你的问题; 我真的在说,"好问题,但它甚至比那更奇怪!"
| 归档时间: |
|
| 查看次数: |
465 次 |
| 最近记录: |