#include <iostream>
using namespace std;
class A
{
private:
float data_member;
public:
A(int a);
explicit A(float d);
};
A::A(int a)
{
data_member = a;
}
A::A(float d)
{
data_member = d;
}
void Test(A a)
{
cout<<"Do nothing"<<endl;
}
int main()
{
Test(12);
Test(12.6); //Expecting a compile time error here
return 0;
}
我期待在这种情况下出现错误,因为我的采用浮点值的 CTOR 是明确的。但是我在 VS 2010 中没有收到任何错误。如果我对 c++ 中的关键字“EXPLICIT”的理解有误,请指出我。