C++ explicit关键字

C++ explicit用法

C++中的explicit关键字只能用于修饰只有一个参数的类构造函数。

它的作用是表明该构造函数是显示而非隐式的,跟他对应的另一个关键字是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!不可隐式转换

你可能感兴趣的:(C++ explicit关键字)