Tea*_*ter 3 c++ object member dereference
任何人都可以解释做以下事情之间的不同:
a->height();
Run Code Online (Sandbox Code Playgroud)
和
a.height();
Run Code Online (Sandbox Code Playgroud)
实际上有区别吗?
这是一个奇怪的问题,假设我们正在讨论内置问题->.这听起来有点像"锤子和苹果之间有什么区别".通常关于"差异"的问题适用于两个变体至少在某种程度上可互换的情况,两者同时适用.因此,人们会询问"差异"来决定使用哪种变体.这不是这种情况.
你不能同时拥有这两者a->height()并且a.height()有效.根据类型,两者中只有一个可以有效a.即您无法选择使用哪个版本.->如果左侧是指向对象的指针,则第一个(带有a )适用.第二个(只有a .)仅适用于左侧是对象值本身的情况.所以,这就是它的全部.
的->是只是为了一元组合的速记*和.,这意味着当a是一个指针a->height()相当于(*a).height().因此,更合理的问题是有关之间的差异a->height()和(*a).height().答案是:没有区别(再次,只要我们考虑内置->)