25項 ポインタと数値型とにオーバロードするのは避けよう
25項 ポインタと数値型とにオーバロードするのは避けよう
ポインタと数値型にオーバロードを行うと、NULLを指定したときに予測できないふるまいをします。
void f(int i){...} void f(char *p){...} int main() { f(NULL);
上のコードでf()を呼び出したとき、NULLが0と定義されているならf(int i)が呼び出され、NULLが(void*)0と定義されているならコンパイルエラーになります。
このふるまいは直感的ではないため、ポインタと数値型とにオーバロードするのは避けるべきです。