record lookup( phone);
record lookup(const phone);
这两个属于函数重载吗?
这个还需要从实参与形参之间的关系中去寻找答案,这对的区别仅仅在于是否将形参定义为const,这种差异并不影响传递到函数的对象,因此第二个函数声明被视为第一个的重复声明。
原因:实参传递方式。复制实参的副本给形参时并不考虑形参是否为const,因为函数操纵的只是副本。函数无法修改实参。因此,既可将const对象传递给const形参,也可传递给非const形参,这两种形参并无本质区别。
比如:
record lookup(15001805405);//这里就假设传递个本人的手机号码吧
此时该调用上面哪个函数呢?很明显两个都可以,形参跟实参都有属于各自的爹妈,各自的空间,互不干涉。
然而这个时候编译器就会傻眼,二义性问题,编译器就成了sb了,因此结论:这组函数不属于函数重载。
ps:形参与const形参的等价性仅仅适用于非引用形参。有const引用形参的函数与有非const引用形参的函数是不同的。类似的,如果函数带有指向const类型的指针形参,则与带有指向相同类型的非const对象的指针形参的函数不形同。
record lookup(const phone&);
record lookup(phone&);
那这两个呢?属于函数重载吗?
答案是属于。肯定属于。
比如:
const phone a=15001805405;//贡献第二次
record lookup(a);这个该调用那个呢?
很明显大家