void*如何作为通用引用类型工作?

Tim*_*Tim -3 c c++ types

来自编程语言语用学,Scott

对于系统编程,或便于编写包含对其他对象的引用的通用容器(集合)对象(列表,堆栈,队列,集等),多种语言提供通用引用类型.在C和C++中,此类型称为void*.在Clu中它被称为any; 在Modula-2中,地址; 在Modula-3,refany; 在Java,Object; 在C#中,对象.

在C和C++中,如何void *作为通用引用类型工作?

void *始终只是一个指针类型,而通用引用类型包含所有值,包括指针和非指针.所以我看不出void *通用引用类型是怎样的.

谢谢.

Mar*_*som 8

void*指针通常将持有任何指针不是一个C++指针到构件.它在实践中相当不方便,因为你需要先将它转换为另一种指针类型才能使用它.您还需要将其转换成它被转换的相同指针类型做出void*,否则你可能不确定的行为.

一个很好的例子就是qsort功能.它将void*指针作为参数,这意味着它可以指向任何数组.传递给的比较函数qsort必须知道如何将两个void*指针转换回数组元素的类型以便比较它们.