This question already has answers here:
What is the difference between the dot (.) operator and -> in C++? [duplicate]
                                
                                    (14个回答)
                                
                        
                                9天前关闭。
            
                    
由于到目前为止我只使用过Web和.NET语言,因此我正在从高级编程课程中学习C ++。
在中途测试中,讲师已将我对(* a).b的所有使用标记为错误并扣除了分数,这可能会对我的最终分数产生负面影响,并且我需要一个接近完美的分数才能完成从Web堆栈到应用程序的转换堆栈,那么你们中的一些人可以帮助我解决此争议吗?

最佳答案

如果a是指针,则功能完全没有区别,实际上,一个是用另一个[expr.ref§2]表示的:


  表达式E1->E2转换为等效形式(*(E1)).E2; [expr.ref]的其余部分将仅解决第一个选项(点)。


如果a是具有重载的运算符*->的类的实例,则可能有所不同。但是这样的差异将是令人惊讶的,因此,我认为该类存在错误。

最后,所有内容都与约定和可读性有关。 ->运算符作为* / .对的简写形式存在,因为它更短并且具有更好的优先级规则(不需要括号)。因此,确实可以使用它而不是* / .

关于c++ - 在C++中。 (* a).b和a-> b有什么区别? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59245745/

10-11 03:57