可能重复:
C++ - (*)之间的差异.和 - >?
这有什么区别:
(*ptr).f();
Run Code Online (Sandbox Code Playgroud)
还有这个:
ptr->f();
Run Code Online (Sandbox Code Playgroud)
在c ++中,ptr是一个指向C++类的指针,它有一个函数f?
根本没有区别.(*ptr).f();这是最丑陋的方式.
其实,如果ptr是一些智能指针和operator*和operator->过载,并执行一些副作用,那么你可能有这个问题.但这真的是非常糟糕的事情.它就像邪恶一样#define true false
如果ptr是普通指针,则两者都是等价的.ptr->f是一个快捷方式,用于取消引用指针(相当于(*ptr))并访问取消引用对象的成员(相当于.f).
如果ptr是,重载类operator->和operator*,那么他们将分别调用不同的操作符重载,所以可以有不同的行为.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |