c ++问题,关于*和 - >

Don*_*Lun 3 c++

当我有一个像这样的指针:

MyClass * pRags = new MyClass;
Run Code Online (Sandbox Code Playgroud)

所以我可以使用

pRags->foo()
Run Code Online (Sandbox Code Playgroud)

要么

(*pRags).foo()
Run Code Online (Sandbox Code Playgroud)

打电话给foo.

为什么这两个是相同的?什么是*pRags?

谢谢

Jam*_*lis 5

为什么这两个相同?

它们是等价的,因为规范说它们是等价的.内置->在内置方面定义*..

什么是*pRags

它是MyClass指向的对象pRags.的* 解引用指针,产生指向的对象.

有关更多信息,请考虑阅读一本好的C++入门书.


Cry*_*ryo 5

除了其他答案,' - >'是为了方便起见.每次访问函数的类变量时,取消引用指向对象的指针都非常难看,不方便,并且可能更令人困惑.

例如:

(*(*(*car).engine).flux_capacitor).init()
Run Code Online (Sandbox Code Playgroud)

VS

car->engine->flux_capacitor->init()
Run Code Online (Sandbox Code Playgroud)