c++ - 双箭头运算符是 C++ 中的一个东西吗?
问题描述
1 #include "Cube.h"
2 using cs225::Cube;
3
4 int main() {
5 Cube *c1 = new Cube();
6 Cube *c2 = c1;
7 c2->setLength( 10 );
8 return 0;
9 }
这是我正在使用的代码,它有什么问题吗?第 7 行是否正确地将 10 的长度分配给立方体对象,还是会返回编译器错误。因为我的理解是箭头操作符将 c2 指向 c1,但 c1 仍然是一个指针,所以不应该有 ->-> 才能到达包含函数的立方体对象吗?
解决方案
Cube *c2 = c1;
这并不指向,c2
这c1
将由下面的第一行完成,第二行显示如何使用它(它不是用神话->->
运算符完成的):
Cube **c2 = &c1;
(*c2)->setLength(10);
原始赋值采用c1
(指向Cube
您分配的指针)的值并将该值放入c2
. 因此c1
和c2
now 都指向同一个Cube
对象。
这就像:
int answer = 42;
int otherAnswer = answer;
因为它设置otherAnswer
为,42
它并没有使它指向。answer
原始代码涉及指针这一事实并没有改变这一特定方面。
推荐阅读
- python - 如何将 numpy 数组分解为列表并创建字典?
- javascript - 是否可以覆盖导出?
- java - 等到 ActionListener 完成执行以收集数据
- c# - 声明一个引用属性 Non-Nullable?
- html - 完成学位项目的地理定位实时无人机
- nativescript - 通过 nativescript tns 命令发布 iOS 时出错
- python - Spyder 不会从 Anaconda 2019.10 Navigator 启动
- node.js - 在单个页面上存储用户访问的会话
- angular - 角垫按钮:悬停背景颜色有效,如果我使用白色以外的颜色
- database - Electron - 如何在不同的应用程序安装之间保持离线数据和同步