explicit只对构造函数起作用,用来抑制隐式转换。如:
  class   A   {
  A(int   a);
  };
  int   Function(A   a);
  当调用   Function(2)   的时候,2   会隐式转换为   A   类型。这种情况常常不是程序员想要的结果,所以,要避免之,可以这样写:
  class   A   {
  explicit   A(int   a);
  };
  int   Function(A   a);
  这样,当调用   Function(2)   的时候,编译器会给出错误信息(除非   Function   有个以   int   为参数的重载形式),这避免了在程序员毫不知情的情况下出现错误。
  总结:explicit只对构造函数起作用,用来抑制隐式转换。