标签: c++
我可以在C ++中使用myFunction(void *x, void *y)吗?
myFunction(void *x, void *y)
我有一个带有此声明的(大)项目,看起来很有效,但我不明白如何将“void”作为参数类型。它会与myFunction(*x, *y)相同吗?
myFunction(*x, *y)
答案 0 :(得分:6)
您没有void参数类型,而是void* - 指向void的指针。任何指针都可以隐式转换为指向void的指针,但是单独使用void*就无法做任何有用的事情。其中一个函数的定义是什么样的?
void
void*
答案 1 :(得分:1)
你肯定可以拥有这样的功能。
实际上,C库有很多函数,其void*作为参数类型。如:
大多数此类函数要么将参数强制转换为某种类型,通常是char*,然后它就可以使用它。
char*
同样,还有其他API,例如POSIX的pcreate_thread或WIN32的CreateThread,其参数很少void*。这是因为它们可以通常用于任何类型的工作。
pcreate_thread
CreateThread
但是在C ++中,您很少需要void*作为参数类型,当然除非您使用C API。在C ++中,对于通用性,您使用的是类型安全的模板。