与功能调用混乱
Confusion with function calls
为什么此功能调用工作?该函数func(int,int)
被声明为占用整数,但即使使用double调用它也可以正常工作。为什么这样?
#include<iostream>
using namespace std;
void func(int a,int b){
cout<<"a is "<<a;
cout<<"nb is "<<b;
}
int main(){
func(12.3,34.3);
}
它隐式将doubles
转换为ints
。您会注意到func(12.3,34.3);
将它们打印为12和34。当您调用函数时,编译器查找具有最佳匹配签名的功能。在这种情况下,它找到了void func(int, int)
并这样称呼,因为它可以进行隐式转换。
为什么此功能调用工作?
看隐式转换。当将值复制到兼容类型时,它们会自动执行,而int
和double
为(12.3和34.3是双打,而不是Floats(。然后,丢失了十进制数字,只有整体零件将被打印。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 与功能调用混乱
- target_link_libraries调用后链接路径混乱
- visual studio-C++函数调用顺序(boost)-混乱