D是否等同于C ++ nullptr_t?

时间:2014-11-25 03:19:38

标签: null d ambiguity

在C ++中,我可以这样做:

void func(void *something) {
    cout << "something" << endl;
}

void func(nullptr_t) {
    cout << "nullptr_t" << endl;
}

int main() {
    int nothing = 5;
    func(&nothing);
    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)时如何解决歧义?

1 个答案:

答案 0 :(得分:7)

void func(typeof(null)) {}

null文字是D中的一种特殊类型,您可以使用typeof运算符专门获取该类型。

请注意,这只会捕获null 文字 - 它不会捕获空对象或空指针变量。