gpt4 book ai didi

c++ - 为什么 float 参数适合 int 函数参数?

转载 作者:行者123 更新时间:2023-11-30 02:38:19 34 4
gpt4 key购买 nike

请看这段代码:

#include <iostream>
class A {
public:
int my;
A(int a=0) : my(a) { }


int main() {
A x = 7; // 1
A y = 6.7; // 2
std::cout << x.my << " " << y.my << "\n";
}

尽管没有 A(double a); 构造函数,它实际上可以编译。究竟什么时候允许编译器将一种参数类型转换为另一种参数类型以调用相应的构造函数?

最佳答案

cppreference 有 a list的标准转换。您感兴趣的是 float - 整数转换 部分,它也可以在 N4140 中找到。 4.9/1

A prvalue of floating-point type can be converted to prvalue of any integer type. The fractional part is truncated, that is, the fractional part is discarded.

发现 A(int) 可以通过标准转换调用,编译器插入必要的步骤以使代码工作。这与允许 int x = 1.1 编译

的规则相同

如果这种行为是不可取的,你可以使用 =delete

来禁止它
class A {
public:
//...
A(int a);
A(double) =delete;
};

关于c++ - 为什么 float 参数适合 int 函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957746/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com