C++中怎么利用explicit关键字实现构造函数

这篇文章给大家介绍C++中怎么利用explicit关键字实现构造函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

目前创新互联公司已为上千的企业提供了网站建设、域名、网页空间、网站托管、企业网站设计、察隅网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:

class MyClass  {  public:  MyClass( int num );  }  ....  MyClass obj = 10; //ok,convert int to MyClass

在上面的代码中编译器自动将整型转换为MyClass类对象,实际上等同于下面的操作:

MyClass temp(10);  MyClass obj = temp;

上面的所有的操作即是所谓的"隐式转换"。

如果要避免这种自动转换的功能,我们该怎么做呢?嘿嘿这就是关键字explicit的作用了,将类的构造函数声明为"显示",也就是在声明构造函数的

时候前面添加上C++ explicit关键字即可,这样就可以防止这种自动的转换操作,如果我们修改上面的MyClass类的构造函数为显示的,那么下面的代码就不能够

编译通过了,如下所示:

class MyClass  {  public:  explicit MyClass( int num );  }  ....  MyClass obj = 10; //err,can't non-explict convert

关于C++中怎么利用explicit关键字实现构造函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


新闻名称:C++中怎么利用explicit关键字实现构造函数
链接分享:http://ybzwz.com/article/gghggh.html