设为首页 加入收藏

TOP

C++中的explicit关键字(一)
2014-02-08 13:36:54 来源: 作者: 【 】 浏览:241
Tags:explicit 关键字

  在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性,我想在有些时候这种特性将会非常有用。

  按默认规定,只用传一个参数的构造函数也定义了一个隐式转换。举个例子:

  (下面这个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;

  }

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++基础内容复习 下一篇C++ AMP: Lambda表达式..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)