博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ explicit关键字
阅读量:5035 次
发布时间:2019-06-12

本文共 664 字,大约阅读时间需要 2 分钟。

explicit关键字不经常看到,切实比较生僻。今天总结一下。

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

这是百度百科给的定义。 从定义上来看大概可以明白什么意思。

具体作用如下:

explicit 的作用解析:
explicit构造函数是用来防止隐式转换的。请看下面的代码:
Test1的 带一个int型的参数,代码23行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码24行会出现编译错误。
普通构造函数能够被 。而explicit构造函数只能被显式调用。
class 
Test1
{
public
:
    
Test1(
int 
n)
    
{
        
num=n;
    
}
//普通构造函数
private
:
    
int 
num;
};
class 
Test2
{
public
:
    
explicit 
Test2(
int 
n)
    
{
        
num=n;
    
}
//explicit(显式)构造函数
private
:
    
int 
num;
};
int 
main()
{
    
Test1 t1=12;
//隐式调用其构造函数,成功
    
Test2 t2=12;
//编译错误,不能隐式调用其构造函数
    
Test2 t2(12);
//显式调用成功
    
return 
0;
}
 
代码转自百度百科。

转载于:https://www.cnblogs.com/lpl1/p/6371375.html

你可能感兴趣的文章
如何回答面试中问到的Hibernate和MyBatis的区别
查看>>
设置Ubuntu 10.10版本的软件源
查看>>
android开发中的 Activity 与 Context 区别与联系
查看>>
数据库基线检查工具DB_BASELINE
查看>>
数据分析应用实战(一)
查看>>
中断和中断处理流程
查看>>
ByteBuffer常用方法详解
查看>>
Web APP开发技巧总结
查看>>
json_encode 中文
查看>>
LeetCode 77. 组合(Combinations)
查看>>
oracle11G安装过程中两个参数详解
查看>>
Easy Mock
查看>>
前端进阶之路
查看>>
Oracle数据库版本号定期检视与升级的必要性分析
查看>>
python基础
查看>>
webservice soap wsdl简介
查看>>
项目冲刺-第八天
查看>>
ORACLE磁盘空间占满解决
查看>>
IMPDP】同一数据库实例不同用户间数据迁移复制——NETWORK_LINK参数
查看>>
ISCC2019-REV3
查看>>