请看这段代码:
#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);
构造函数,但它实际上是编译的。
什么时候允许编译器将一个参数类型转换为另一个参数类型以调用相应的构造函数?