是否可以使用void指针重载函数:
void setValue(void* value) {
}
带有特定指针的函数?
void setValue(double* value) {
}
如果我们传递一个void *值,那么这些重载函数的行为将如何。
void* lvalue;
setValue(lvalue);
如果我们传递一个特定的指针:
double* lvalue;
setValue(lvalue);
这会像预期的那样发挥作用吗?
答案 0 :(得分:1)
void*
和double*
是不同的类型,因此重载应该按预期工作。
答案 1 :(得分:1)
#include <iostream>
void f(double* ptr) { std::cout << "DOUBLE\n"; }
void f(void* ptr) { std::cout << "VOID\n"; }
int main()
{
void* v = nullptr;
double* d = nullptr;
f(v);
f(d);
// f(nullptr); // fails to compile
// f(NULL); // fails to compile
}
输出:
VOID
DOUBLE
现在,如果您想要f(nullptr)
进行编译,请添加f(std::nullptr_t)
重载。