C++转换函数 (conversion function)与 C++中explicit关键字
本文将介绍C++中的转换函数(conversion function)和 C++中explicit关键字。
1、c++中explicit的作用
作用:在c++中,explicit只能用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。
class Circle
{
public:
Circle(double r) : m_R(r) {}
Circle(int x, int y = 0) : m_X(x), m_Y(y) {}
Circle(const Circle& c) : m_R(c.R), m_X(c.X), m_Y(c.Y) {}
private:
double m_R;
int m_X;
int m_Y;
};
int main()
{
//发生隐式类型转换
//编译器会将它变成如下代码
//tmp = Circle(1.23)
//Circle A(tmp);
//tmp.~Circle();
Circle A = 1.23;
//注意是int型的,调用的是Circle(int x, int y = 0)
//它虽然有2个参数,