我可以在C ++中使用`myFunction(void * x,void * y)`来声明吗?

时间:2011-12-05 16:53:31

标签: c++

我可以在C ++中使用myFunction(void *x, void *y)吗?

我有一个带有此声明的(大)项目,看起来很有效,但我不明白如何将“void”作为参数类型。它会与myFunction(*x, *y)相同吗?

2 个答案:

答案 0 :(得分:6)

您没有void参数类型,而是void* - 指向void的指针。任何指针都可以隐式转换为指向void的指针,但是单独使用void*就无法做任何有用的事情。其中一个函数的定义是什么样的?

答案 1 :(得分:1)

你肯定可以拥有这样的功能。

实际上,C库有很多函数,其void*作为参数类型。如:

大多数此类函数要么将参数强制转换为某种类型,通常是char*,然后它就可以使用它。

同样,还有其他API,例如POSIX的pcreate_thread或WIN32的CreateThread,其参数很少void*。这是因为它们可以通常用于任何类型的工作。

但是在C ++中,您很少需要void*作为参数类型,当然除非您使用C API。在C ++中,对于通用性,您使用的是类型安全的模板。