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