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堆栈到应用程序的转换堆栈,那么你们中的一些人可以帮助我解决此争议吗?
(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