C++:使用具有特定(双...)指针参数的函数重载具有void *函数的函数

标签 c++ overloading

是否可以用空指针重载函数:

void setValue(void* value) { 
}

用一个带有特定指针的函数`?

void setValue(double* value) { 
}

如果我们传递一个 void* 值,这种重载函数的行为会怎样。

void* lvalue;
setValue(lvalue);

如果我们传递一个特定的指针:

double* lvalue;
setValue(lvalue);

这会像预期的那样工作吗?

最佳答案

Yes.

#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) 重载。

关于C++:使用具有特定(双...)指针参数的函数重载具有void *函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062043/

相关文章:

c++ - 具有前向声明的转换运算符

Java - 重载和覆盖

c++ - 如何让 const char* 函数工作?

C++ 如何使用 16 色(4 位)位图在内存中获取屏幕截图输出

c++ - 为什么 Windows 拒绝访问某些进程的名称?

c++ - 在不分配新内存的情况下使用指针调用重载

F# 强制重载 System.String.Format

c++ - 纯虚函数重载

c++ - Xcode 4 SFML 2 错误

c++ - 在 C++ 中正确使用 exit()?