【发布时间】:2018-02-01 10:07:05
【问题描述】:
来自 Scott 的 Programming Language Pragmatics
用于系统编程,或方便编写 通用容器(集合)对象(列表、堆栈、 队列、集合等)保存对其他对象的引用,有几个 语言提供了一个通用的引用类型。 在 C 和 C++ 中,这 类型称为 void *。在 Clu 中,它被称为 any;在 Modula-2 中, 地址;在 Modula-3 中,reany;在 Java 中,对象;在 C# 中,对象。
在 C 和 C++ 中,void * 如何作为通用引用类型工作?
void * 始终只是指针类型,而通用引用类型包含所有值,包括指针和非指针。所以我看不出void *是一个通用引用类型。
谢谢。
【问题讨论】:
-
“它是如何工作的”具体是什么意思?
-
void *始终是指针类型,而通用引用类型包含所有值,包括指针和非指针 -
它可以指向任何东西。但是,您必须先告诉编译器它是什么,然后才能真正了解它所指向的内容。
-
指针是最接近 C 中类似引用的概念的方法。
-
@Leushenko 书中的引述清楚地表明,这里的“参考”是通用的计算机科学术语,而不是专门针对 C++ 的参考。