首页 新闻 搜索 专区 学院

菜鸟提问,求帮助

0
悬赏园豆:10 [已解决问题] 解决于 2010-12-05 22:03

如果我们重载了一个运算符,我们使用了这个运算符,但是在一段程序中我们需要使用这个运算符未重载时的意思,编译器是怎么区分呢?我个人感觉是根据操作数的不同来区分的,

lzjnhs的主页 lzjnhs | 初学一级 | 园豆:60
提问于:2010-11-28 20:11
< >
分享
最佳答案
0

运算符重载。跟一般函数的重载是一样的,都属于函数的重载范畴。

实现函数重载的一个主要规则:

   1)同名函数(同一运算符)的参数必须不同,不同之处可以是参数的类型参数的个数

  --编译器主要根据这一点来区分调用哪一个函数(或使用运算符)

  2)其次,根据参数类型的匹配程度,来决定使用同名函数的次序。

例:

a)int max(int a, int b);

b)float max(float a, int b);

c)double max(double a, double b);

如果是int ret = max(1,2);编译器选择函数a)执行。

但若是double ret = max(1.0,2);则即不执行a),也不执行b),而执行c)。

因为默认情况下,1.0编译器是认为它是double类型的,且返回值类型与c)匹配,

故c)的匹配程度最高,而选择c)执行。

 

  大概也就是你所讲的根据操作数的不同来区分,希望上面的答案能使你满意。

 

收获园豆:10
¥忘%风 | 菜鸟二级 |园豆:230 | 2010-11-28 20:56
其他回答(1)
0

没有被重载的运算符还是跟以前一样用,不影响

茂茂 | 园豆:2860 (老鸟四级) | 2010-11-29 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册