我知道,如果参数数量不同或参数类型不同,则函数的重载是合法的。
为什么仅返回类型的差异是不合法的?
同样,这样重载是否合法:
int hello(int x);
int hello(int &z);
还
int hi(int x);
int hi(int *z);
编译器无法仅通过返回值来确定要尝试调用的函数。由于不需要捕获返回值,因此您可以编写:
hello( 1 ); // return int
hello( 2 ); // return float
从可见的角度来看,它们是完全相同的调用。
是的,这是合法的,因为第一个hi引用了一个引用,第二个hi引用了一个内存地址。您可以这样称呼它:
hi( myNumber );
hi( &myNumber );
完全可区分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句