C++中的explicit关键字实例浅析-创新互联
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性,我想在有些时候这种特性将会非常有用。
创新互联建站是一家专注于网站建设、网站制作与策划设计,库车网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:库车等地区。库车做网站价格咨询:028-86922220按默认规定,只用传一个参数的构造函数也定义了一个隐式转换。举个例子:
(下面这个CExample没有什么实际的意义,主要是用来说明问题)
//Example.h #pragma once class CExample { public: CExample(void); public: ~CExample(void); public: int m_iFirst; int m_iSecond; public: CExample(int iFirst, int iSecond = 4); }; //Example.cpp #include "StdAfx.h" #include "Example.h" CExample::CExample(void) : m_iFirst(0) { } CExample::~CExample(void) { } CExample::CExample(int iFirst, int iSecond):m_iFirst(iFirst), m_iSecond(iSecond) { } //TestExplicitKey.cpp ...//其它头文件 #include "Example.h" int _tmain(int argc, _TCHAR* argv[]) { CExample objOne; //调用没有参数的构造函数 CExample objTwo(12, 12); //调用有两个参数的构造函数 CExample objThree(12); //同上,可以传一个参数是因为该构造函数的第二个参数有默认值 CExample objFour = 12; //执行了隐式转换,等价于CExample temp(12);objFour(temp);注意这个地方调用了 //编译器为我们提供的默认复制构造函数 return 0; }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:C++中的explicit关键字实例浅析-创新互联
文章网址:http://pwwzsj.com/article/jgdho.html