隐式转换和调用函数

时间:2016-10-28 23:21:49

标签: c++ implicit-conversion

当我调用一个将参数作为int的函数时,C ++中隐式转换的用途是什么,而我传递的参数是double?为什么这不是编译时错误?在运行时堆栈中发生了什么允许这种情况发生?

#include <iostream>
void foo(int num);

int main() {
    double doub= 4.9;
    foo(doub);
    return 0;
}

void foo(int num){
    std::cout<<num<<std::endl;
}

1 个答案:

答案 0 :(得分:2)

这是C ++所做的所有implicit conversions的长列表。这个特别的内容包括在:

  

浮动积分转换浮点类型的prvalue可以转换为任何整数类型的prvalue。小数部分是   截断,即丢弃小数部分。如果值   无法适应目标类型,行为未定义(甚至   当目标类型是无符号时,模运算不会   应用)。如果目标类型是bool,则这是布尔转换   (见下文)。