c++ - 为什么在声明对象数组时不能使用 -> 运算符?

标签 c++ pointers

风景01:

vector<int> *v = new vector<int>();
v->push_back(10);

它工作正常。

风景02:

vector<int> *arr = new vector<int>[5];
arr[0]->push_back(10);

这是行不通的。为什么?

最佳答案

v是指向 std::vector<int> 的指针目的。因此 push_back()使用 . 不能直接获得 vector 的函数符号,但可以使用 -> 直接访问符号,以及其他方式。

arr是指向 std::vector<int> 的指针对象数组。调用arr[0]您正在获取该数组的第一个元素,即 std::vector<int>对象,而不是指针。标准.符号在这里应该工作得很好。

关于c++ - 为什么在声明对象数组时不能使用 -> 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59566234/

相关文章:

c++ - 这是 C++ 中带有指针的数组的良好使用/代码吗?

c - 限制指针问题

c++ - 从 ifstream 读取到 stringstream 的有效方法

c++ - 卷影拷贝与数据保护管理器

c++ - x64 平台上的 GCC 是否默认启用扩展精度?

c++ - 如何复制 boost 信号的槽

c - 获取一个子程序以在 C 中返回三个独立的随机数数组

c++ - 为什么当我访问一个由三个整数组成的对象时,它会从基指针而不是堆栈指针中减去?

c++ - 如何使用带有非默认构造函数的指针进行 Boost 序列化

c++ - 在执行 buttonReleased() 之前等待 buttonPressed() 插槽完成