在C ++中,我可以这样做:
void func(void *something) {
cout << "something" << endl;
}
void func(nullptr_t) {
cout << "nullptr_t" << endl;
}
int main() {
int nothing = 5;
func(¬hing);
func(nullptr);
return 0;
}
输出:
东西
nullptr_t
所以我可以特殊情况nullptr_t。
在D中,我有两个功能:
void func(void* pod) {
cout << "pod" << endl;
}
void func(Object obj) {
cout << "Object" << endl;
}
那么在调用func(null)
时如何解决歧义?
答案 0 :(得分:7)
void func(typeof(null)) {}
null文字是D中的一种特殊类型,您可以使用typeof
运算符专门获取该类型。
请注意,这只会捕获null
文字 - 它不会捕获空对象或空指针变量。