请看看这段代码:为什么float参数适合int函数参数?
#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);
构造。 何时允许编译器将一个参数类型转换为另一个参数以调用相应的构造函数?
'当正好编译器允许convert'每次[当隐式转换是可能的,没有更好的方法]。 – deviantfan
[此参考资料](http://en.cppreference.com/w/cpp/language/implicit_cast)列出标准转换。这里特别感兴趣的是浮点积分转换。 – chris
另外,查看构造之间的区别,'A x(7)'和赋值,'x = 7;' –