关于 explicit 的一些学习

来源:互联网 发布:中国工商银行mac版 编辑:程序博客网 时间:2024/06/05 05:28

一直不太明白这个关键字到底是干什么的。后来在晚上搜索了几篇文档看了一下。

首先是这篇:《 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关键字应用方法详解》


 

0 0
原创粉丝点击