参考博客:https://blog.csdn.net/feiyanaffection/article/details/79183340
隐式类型转换
如果不同类型的数据在一起操作的时候编译器会自动进行一个数据类型转换。例如常用的基本数据类型有如下类型转换关系:
转换构造函数
- 构造函数
- 有且仅有一个参数
有这种构造函数时我们就可以从其他类型隐式地转换为类类型。因此成为转换构造函数。例如:
class A
{int a;public:A(int x){a=x;}
};int main()
{A tmp;tmp=8;//调用转换构造函数,相当于tmp=A(8);
}
有时我们为了避免隐式转换带来的bug,用explicit
杜绝编译器的隐式转换。
类型转换函数
我们可以将其他类型通过类型转换函数变为类类型,可是如果我们想将类类型(简洁方便地)变为其他类型,应该怎样做呢?
这时候就要用到类型转换函数,一般格式为:
operator 目标类型()
{//return 目标类型的返回值
}
例如:
class A
{int a;public:A(int x=10){a=x;}operator int(){return a;}
};
int main()
{A a(20);int x=a;
}