C++构造函数 explicit

防止可能引发错误的隐式类型转换。

仅有一个参数的 C++ 构造函数会自动执行隐式类型转换。 例如,如果在 ctor 需要字符串指针参数时传递 int,则编译器会添加必须将 int 转换为字符串指针的代码。 但是,此自动行为会导致错误。

若要防止隐式转换,可以将 explicit 关键字添加到 ctor 声明中。 这会强制该代码使用正确类型的参数或将参数转换为正确类型。 即,如果未在代码中显式表示转换,则会导致错误。

explicit 关键字只能应用于类中的 ctor 声明以显式构造对象。

通常,建议您将所有单参数 ctor 标记为 explicit,除非您确定需要隐式转换。

将具有多个参数的 构造函数 声明为 explicit 不起作用,因为此类 ctor 不能参与隐式转换。 但是,如果 ctor 具有多个参数,并且所有这些参数(有一个参数除外)都具有默认值,则 explicit 将起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值