使用指针调用重载而不分配新内存

时间:2015-03-17 23:46:39

标签: c++ pointers overloading

考虑重载:

void foo(int) {std::cout << "foo(int) called.\n";}
void foo(int*) {std::cout << "foo(int*) called.\n";}
void foo(char*) {std::cout << "foo(char*) called.\n";}
void foo(bool*) {std::cout << "foo(bool*) called.\n";}

虽然

foo(int{});

将调用第一个重载,在没有分配新的int *的情况下调用第二个重载的最干净的方法是什么?比

更好的东西
foo(static_cast<int*>(nullptr));

我在这里错过了一个简单的语法吗?

1 个答案:

答案 0 :(得分:1)

虽然foo(int*{})不起作用,foo((int*){})仅适用于某些编译器,但foo((int*)0)可能是最短,最容易理解并保证可以正常工作的。{/ p>