在C++。(*a).b 和 a->b 有什么区别?
In C++. whats the difference between (*a).b and a->b?
我正在从我的工作中学习高级编程课程C++,因为到目前为止我只使用过 Web 和 .NET 语言。 在中途测试中,讲师将我所有使用 (*a(.b 标记为错误并为此扣分,这可能会对我的最终分数产生负面影响,我需要近乎完美的分数才能在从 Web 堆栈到应用程序堆栈的工作中转换,所以你们中的一些人可以帮助我解决这个争议吗?
如果a
是一个指针,那么功能上根本没有区别,实际上一个是用另一个[expr.ref§2]表示的:
表达式
E1->E2
被转换为等效形式(*(E1)).E2
;[expr.ref] 的其余部分将只处理第一个选项(点(。
如果a
是具有重载运算符*
和->
的类的实例,则可能存在差异。但是这样的差异会令人惊讶,因此我认为该类存在错误。
最后,这一切都与惯例和可读性有关。->
运算符作为*
/.
对的简写存在,因为它更短并且具有更好的优先级规则(不需要括号(。因此,人们确实会使用它而不是*
/.
.
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - "!pointer"和"pointer == nullptr"的区别?
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 返回递归调用和仅递归调用的区别
- EASTL矢量<向量<int>>连续的
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?