explicit 显示的类型转换运算符

本文介绍了C++中explicit关键字的用途及其如何防止不应允许的构造函数隐式转换。通过示例对比了普通构造函数与显式构造函数在隐式转换中的不同行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。

调用构造函数可以分为显示调用和隐式调用,当用赋值初始化就是显示调用,赋值初始化是隐式调用

比如:

 1 class Test1
 2 {
 3 public:
 4     Test1(int n)
 5     {
 6         num=n;
 7     }//普通构造函数
 8 private:
 9     int num;
10 };
11 class Test2
12 {
13 public:
14     explicit Test2(int n)
15     {
16         num=n;
17     }//explicit(显式)构造函数
18 private:
19     int num;
20 };
21 int main()
22 {
23     Test1 t1=12;//隐式调用其构造函数,成功
24     Test2 t2=12;//编译错误,不能隐式调用其构造函数
25     Test2 t2(12);//显式调用成功
26     return 0;
27 }

 

转载于:https://www.cnblogs.com/raichen/p/5696888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值