我正在阅读关于C++的教程,该教程演示了如何使用下标语法从数组元素调用对象的公共方法.它是这样的:
Foo* array = new Foo[2];
array->public_function();
array[1].public_function();
Run Code Online (Sandbox Code Playgroud)
现在我明白变量array指向数组的第一个元素,因此使用->运算符来访问该元素的公共数据和函数.我的问题是,为什么调用array[1]会有所不同 - 为什么它会使用.语法而不是->语法?是不是数组指针的所有元素?
使用索引后[],您将获得对象,而不是指向对象的指针.
请考虑以下示例,该示例使用指针算法直接使用指针.
Foo* array = new Foo[2];
// Following four are equivalent.
array[0].public_function();
array->public_function();
(array + 0)->public_function();
(&array[0])->public_function();
// Following three are equivalent.
array[1].public_function();
(array + 1)->public_function();
(&array[1])->public_function();
Run Code Online (Sandbox Code Playgroud)