什么是C++中的void指针?

Dr.*_*ula 20 c++ pointers

我的问题很简单:C++中的void指针什么?(你声明的那些东西void* myptr;)

它们的用途是什么?我可以让它们指向任何类型的变量吗?

Pét*_*rök 20

基本上是来自C的残余.

它们的用途是什么?

在C语言中,它们被广泛使用,但在C++中,我认为它们很少需要,因为我们有多态性,模板等,它们提供了一种更清洁,更安全的方法来解决C语言中的相同问题.会使用void指针.

我可以让它们指向任何类型的变量吗?

是.但是,正如其他人所指出的那样,你不能直接使用void指针 - 你必须先将它转换为指向具体数据类型的指针.

  • 如果你是用C++编写的(而不是C语言),使用`void*`几乎总是错误的.为什么不通过寻找*正确的方法来处理这些案例来提高您的C++技能? (9认同)

jwi*_*mar 7

是的,这是一个C构造(不是C++特定的),它允许您声明指向任何类型的指针变量.除了将它转换回它实际指向的真实对象之外,你不能用这样的指针做任何事情.在现代C++中,void*几乎已经过时了,在很多情况下会产生基于模板的通用代码.


whe*_*ies 6

关于C++中的void指针存在的少数用法之一是它们用于重载new运算符.所有new运算符void*按定义返回类型.除此之外,其他人所说的是真的.