c++ - 这两个类型测试对象的动态数组声明之间的区别?
问题描述
为什么指针ptr
允许我们通过点运算符访问它的成员函数,.
而不pt
需要间接运算符->
?
int n = 5;
test* ptr = new test[n];
ptr[1].print();
test* pt[45];
pt[1] = new test(2,3);
pt[1]->print();
解决方案
因为它们是不同的东西。
ptr
是一个类型的指针test*
,它指向数组的第一个元素test[n]
,它的元素是类型test
,然后ptr[1]
给出第二个元素的类型test
。
pt
是一个数组,其元素的类型为test*
,然后pt[1]
给出类型为 的第二个元素test*
。
推荐阅读
- javascript - 使用 JS 获取自定义 HTML 属性并与“this”一起使用
- jquery - 发送到用户在表单中输入的贝宝数据
- angular - 将对象发送到 NgRx 存储后无法重置对象
- c++ - c++ 客户端的 Kafka 凭据和使用者参数
- oracle-apex - Oracle Apex:如果班车列表仅包含单个项目,则自动选择
- javascript - 如何在 jest 和酵素中设置 useState Hook 的初始状态值?
- clickhouse - clickhouse 基于磁盘的字典
- python - 在 Python 3.7 中使用 for 循环重命名字典键
- python - 插值曲线末端所需的垂直线
- reactjs - 如何解决本机反应中的以下错误?