在满足下条件时,编译器才会使用隐式转换:
1,存在匹配的构造函数。
如:class A {
public:
A(B);
};
//
A a=B;
2,存在声明的转换操作符:
class B {
public:
operator A() const;
};
//
A a=B;
备注:隐式转换有时可能造成二义性。为了阻止编译器使用隐式转换,可以将构造函数用explicit修饰。
在满足下条件时,编译器才会使用隐式转换:
1,存在匹配的构造函数。
如:class A {
public:
A(B);
};
//
A a=B;
2,存在声明的转换操作符:
class B {
public:
operator A() const;
};
//
A a=B;
备注:隐式转换有时可能造成二义性。为了阻止编译器使用隐式转换,可以将构造函数用explicit修饰。