函数重载解析期间的提升与转换
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?
有人可能比我解释得更好,但我可以举个例子。
促销类型包括 char
到 short
,或 int
,或 long
(等等)。转换是 char
到 double
或 double
到 bool
。
在您的示例中,当调用 func
时,有两个选项:func(int)
和 func(double)
。由于char
到double
是一个转换,而char
到int
是一个提升,那么func(int)
就会被调用。
我建议阅读标准的 [conv]
。
我正在研究函数重载,我了解到提升优先于转换。什么是促销,它与转化有何不同?
例如:
void func(int); //function number 1
void func(double); //function number 2
char a;
func(a); // which function will be called, 1 or 2?
有人可能比我解释得更好,但我可以举个例子。
促销类型包括 char
到 short
,或 int
,或 long
(等等)。转换是 char
到 double
或 double
到 bool
。
在您的示例中,当调用 func
时,有两个选项:func(int)
和 func(double)
。由于char
到double
是一个转换,而char
到int
是一个提升,那么func(int)
就会被调用。
我建议阅读标准的 [conv]
。