实参类型转换
基本来自 C++Primer5th
所指 章节 和 页码 都属 C++Primer 5th 中文版
off = 26
为了确定最佳匹配,编译器将实参类型到形参类型的转换划分成几个等级,具体排序
如下所示:(书P219)
- 精确匹配
- 实参类型和形参类型相同
- 实参从数组类型或函数类型转换成对应的指针类型(参见6.7节,第221页,将介
绍函数指针) - 向实参添加项层const或者从实参中删除顶层const。
- 通过const转换实现的匹配(参见4.11.2 节,第143页)
- 通过类型提升实现的匹配(参见4.11.1 节,第142页)
- 通过算术类型转换(参见4.11.1节,第142页)或指针转换(参见4.11.2节,第143
页)实现的匹配 - 通过类类型转换实现的匹配(参见14.9节,第514页,将详细介绍这种转换)
前两种没什么好讲的 就字面意思
类型提升
void greet(const char*cc){
std::cout<<cc<<std::endl;
}
void ff(int){
greet("int");}
void ff(short){
greet("short");}
int main(){
ff('a');
// ff(0); 如果没有 void ff(int) 函数 这个调用可以匹配 ff(short)
return 0;
}