C++中object-> function()和object.function()之间的区别

Tea*_*ter 3 c++ object member dereference

任何人都可以解释做以下事情之间的不同:

a->height();
Run Code Online (Sandbox Code Playgroud)

a.height();
Run Code Online (Sandbox Code Playgroud)

实际上有区别吗?

Adr*_*ica 6

在第一个示例中,a是指向对象的指针,在第二个示例中,它是对象本身(或对象的引用).在最低级别,两者之间没有明显的区别.


AnT*_*AnT 5

这是一个奇怪的问题,假设我们正在讨论内置问题->.这听起来有点像"锤子和苹果之间有什么区别".通常关于"差异"的问题适用于两个变体至少在某种程度上可互换的情况,两者同时适用.因此,人们会询问"差异"来决定使用哪种变体.这不是这种情况.

你不能同时拥有这两者a->height()并且a.height()有效.根据类型,两者中只有一个可以有效a.即您无法选择使用哪个版本.->如果左侧是指向对象的指针,则第一个(带有a )适用.第二个(只有a .)仅适用于左侧是对象值本身的情况.所以,这就是它的全部.

->是只是为了一元组合的速记*.,这意味着当a是一个指针a->height()相当于(*a).height().因此,更合理的问题是有关之间的差异a->height()(*a).height().答案是:没有区别(再次,只要我们考虑内置->)