請看看這段代碼:爲什麼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;' –