C++中的函数静态绑定

sky*_*oor 1 c++

我问的是C++中函数的静态绑定.什么是函数绑定的数据类型转换规则.

假设我们有

void func(int x);
void func(long x);
void func(float x);
void func(double x);
void func(char x);
Run Code Online (Sandbox Code Playgroud)

我在main中有一个功能

func(1)
Run Code Online (Sandbox Code Playgroud)

我知道函数func(int x)将被调用.我很好奇这个规则.

它始终是最佳匹配吗?

申报的顺序是否重要?

在任何情况下都会应用数据类型转换?

规则设计时的关注点是什么?

Kon*_*lph 5

它始终是最佳匹配吗?

是的:1是的int.如果存在适当的重载,则将采用它,因为这最小化了必要的隐式转换的数量(无).

申报的顺序是否重要?

不可以.但是,在调用之前是否已声明函数很重要.如果在调用之后声明了该函数,则不会考虑重载解析.

在任何情况下都会应用数据类型转换?

这里没有转换因为int是完全匹配.转换只有在没有完全匹配时才会发挥作用.

规则设计时的关注点是什么?

嗯,这是唯一有意义的规则,不是吗?