您的位置:首页 > 编程语言 > C语言/C++

关于 explicit 的一些学习

2016-01-22 16:07 387 查看
一直不太明白这个关键字到底是干什么的。后来在晚上搜索了几篇文档看了一下。

首先是这篇:《 C++中的explicit关键字》

但是还是感觉不太懂,所以自己动手敲了几段代码。

#include<iostream>
using namespace std;
class a
{
public:
char num;
char data;
a(char n,char d='n')
{
num=n;
data=d;
cout<<"this is a: "<<num<<" "<<data<<endl;
}
virtual ~a()
{
cout<<"delete a"<<endl;
}
};
class aa:public a
{
public:
aa(char n,char d):a(n,d)
{
cout<<"this is aa"<<endl;
}
~aa()
{
cout<<"delete aa"<<endl;
}
};
int main()
{
a a='a';

return 0;
}




但是如果是下面的代码:

#include<iostream>
using namespace std;
class a
{
public:
char num;
char data;
explicit a(char n,char d='n')
{
num=n;
data=d;
cout<<"this is a: "<<num<<" "<<data<<endl;
}
virtual ~a()
{
cout<<"delete a"<<endl;
}
};
class aa:public a
{
public:
aa(char n,char d):a(n,d)
{
cout<<"this is aa"<<endl;
}
~aa()
{
cout<<"delete aa"<<endl;
}
};
int main()
{
a a='a';

return 0;
}


运行结果是这样的:



 

其实关键点在这里:如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。

后来在网上看到这篇文章,觉得讲的就比较清楚了。

《C++ explicit关键字应用方法详解》

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ explicit