函数重载解析期间的提升与转换

Promotion vs. conversion during function overload resolution

我正在研究函数重载,我了解到提升优先于转换。什么是促销,它与转化有何不同?

例如:

void func(int); //function number 1
void func(double); //function number 2
char a;
func(a); // which function will be called, 1 or 2?

有人可能比我解释得更好,但我可以举个例子。

促销类型包括 charshort,或 int,或 long(等等)。转换是 chardoubledoublebool

在您的示例中,当调用 func 时,有两个选项:func(int)func(double)。由于chardouble是一个转换,而charint是一个提升,那么func(int)就会被调用。

我建议阅读标准的 [conv]