2
在C++中,我可以这样做:D是否具有与C++ nullptr_t等效的功能?
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)
时如何解决的不确定性?
请不要使用nullptr_t来解决歧义。使调用者明确地提及类型,或者通过强制转换或首先将其分配给变量。 – Cubic 2014-12-18 04:51:47
为什么不能.......? – bitwise 2014-12-18 10:56:36
因为这将只适用于文字。很可能,如果有人用'null'文字调用你的函数,他们就意味着选择两个重载中的一个,而不是'nullptr_t'重载。并且通过提供'nullptr_t'重载,你会默默地抛弃那个错误。 – Cubic 2014-12-18 15:11:41