C++ explicit用法
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数。
<font color=black>
它的作用是表明该构造函数是显示而非隐式的,跟他对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit。
作用
禁止隐式调用类内的单参数构造函数。
- 该关键字只能用来修饰类内部的构造函数
- 禁止隐式调用拷贝构造函数
- 禁止类对象之间的隐式转换
显式转换和隐式转换
显式转换:
强制转换
int a = 4;
float b = 5.56;
float c = (float) a;
隐式转换:
在转换时不给系统提示具体的显示模型,让其自动进行转换
int a = 4;
float b = 5.56;
b = a; //隐式转换,默认把int类型转换为float类型
example
class CxString
{
CxString (int size); //单参数构造函数
}
CxString string1(24); (1)
CxString string2 = 10; (2)
CxString string3 = 'c'; (3) //size = 'c'的ASCII码
添加explicit关键字:
class CxString
{
explicit CxString (int size); //单参数构造函数
}
CxString string1(24); (1)
CxString string2 = 10; (2) //error!不可隐式转换
CxString string3 = 'c'; (3) //error!不可隐式转换