重载分辨率,cpp

时间:2011-09-21 18:22:21

标签: c++ overloading resolution

据我所知,如果有多个具有相同名称和相同数量参数的函数,编译器会尝试找到最佳匹配(到目前为止我是对吗?)

我不明白的是类型提升和类型转换之间的区别。

说我有这个函数decleration:void foo (double x)然后在main:

int x = 5;
foo(x);

这被视为转换或促销吗?

2 个答案:

答案 0 :(得分:2)

类型提升是类型转换的特例。

http://en.wikipedia.org/wiki/Type_conversion#Type_promotion

答案 1 :(得分:-3)

你的榜样不会工作

你需要有2个重载方法

1。)void foo(double x){method code}和

2。)void foo(int x){method code}

然后当你运行代码

int x = 5;

FOO(5)

编译器或运行时环境根据您传入的输入类型知道要调用哪个方法。

如果我想将int转换为不同的double。我不确定您使用的语言是什么,但在Java中,您可以使用类型转换

进行转换

这是类型转换,并将double转换为int。如果有小数部分,你将会丢失小数部分。

双d = 5; int i =(int)d;

我认为这就是你要问的。如果没有请澄清一点