もうしないといったけど

#include
using namespace std;

class A{
public:
     A(int i){
          cout << "A" << endl;
     }
};
int main(void){
     A a = 1;
}

変換コンストラクタってやつか。で、Aのコンストラクタの前にexplicitをつけると変換されない。あと、aを参照型にしても。予想しない暗黙の型変換を防ぐ意味でも参照にしたほうがいいのだろうか?やはり奥が深いなあ・・・