bosthhe1 / cpushpush

0 stars 0 forks source link

对于函数重载的浅析 #3

Open bosthhe1 opened 1 year ago

bosthhe1 commented 1 year ago

c++对于函数有了新的优化,其中有一个优化就是函数重载,函数重载的条件是,函数名相同,但是参数的类型,数目,顺序不同,都可以构成重载,不可以用返回值作为重载函数的条件,缺省参数也最好不要使用,原因在下面评论细说。 重载的原理是,编译器在编译函数的时候,会根据函数传参的类型,调整函数名,相同的函数具有不同的类型,函数名名添加一些其他符号,让与重名函数做区别,而c语言会冲突就是因为函数名字在编译器内部转换函数名太简单了,会构成重名,链接的时候就会存在二义性。

bosthhe1 commented 1 year ago

对于函数重载,需要注意的是,缺省参数是构成函数重载的,函数的链接是没有问题的,但是缺省参数的问题是,传参的时候,存在二义性,传参不知道调用缺省的函数,还是其他重载函数,重载传引用和这个一样,可以都成重载函数,但是在调用的时候,存在二义性 当我们不调用这个重载函数的时候,不会报错,说明这两个函数构成重载 image 但是当我们调用函数的时候,就会报错,是函数调用存在二义性 image