微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 有什么区别:句柄,指针和参考

句柄与指向对象的指针有何不同,为什么我们不能引用引用呢?

解决方法

句柄通常是对象的不透明引用.句柄的类型与引用的元素无关.考虑例如open()系统调用返回文件描述符.该类型是int,但它表示打开文件表中的条目.存储在表中的实际数据与open()返回的int无关,使实现不必维护兼容性(即,实际的表可以透明地重构而不影响用户代码.句柄只能由相同的库接口,可以将句柄重新映射回实际对象.

指针是内存中的地址和位于该内存位置的对象类型的组合.值是地址,指针的类型告诉编译器可以通过该指针执行哪些操作,如何解释内存位置.指针是透明的,因为引用的对象具有从指针中存在的具体类型.请注意,在某些情况下,指针可以用作句柄(void *完全不透明,指向空接口的指针也是不透明的).

引用是对象的别名.这就是为什么你不能引用引用:你可以有一个对象的多个别名,但你不能有一个别名的别名.与指针一样键入引用.在某些情况下,引用可以由编译器实现,作为在使用时自动取消引用的指针,在某些其他情况下,编译器可以具有没有实际存储的引用.重要的部分是它们是对象的别名,它们必须用对象初始化,并且在初始化之后不能重新引用其他对象.一旦它们被初始化,引用的所有使用都是真实对象的使用.

原文地址:https://www.jb51.cc/c/115778.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐