纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

C++ explicit关键字的使用 C++ explicit关键字的使用详解

一世流离   2021-09-10 我要评论
想了解C++ explicit关键字的使用详解的相关内容吗一世流离在本文为您仔细讲解C++ explicit关键字的使用的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C++,explicit,C++,explicit关键字下面大家一起来学习吧

在C++中我们有时可以将构造函数用作自动类型转换函数但这种自动特性并非总是合乎要求的有时会导致意外的类型转换因此C++新增了关键字explicit用于关闭这种自动特性即被explicit关键字修饰的类构造函数不能进行自动地隐式类型转换只能显式地进行类型转换

注意:只有一个参数的构造函数或者构造函数有n个参数但有n-1个参数提供了默认值这样的情况才能进行类型转换

下面通过一段代码演示具体应用(无explicit情形):

/* 示例代码1 */
class Demo
{
   public:
    Demo();                     /* 构造函数1 */
    Demo(double a);              /* 示例代码2 */
    Demo(int a,double b);           /* 示例代码3 */
    Demo(int a,int b=10,double c=1.6);  /* 示例代码4 */
    ~Demo();
    void Func(void);

    private:
    int value1;
    int value2;
};

上述四种构造函数:

构造函数1没有参数无法进行类型转换!

构造函数2有一个参数可以进行类型转换如:Demo test; test = 12.2;这样的调用就相当于把12.2隐式转换为Demo类型

构造函数3有两个参数且无默认值故无法使用类型转换!

构造函数4有3个参数其中两个参数有默认值故可以进行隐式转换如:Demo test;test = 10;  

下面讲述使用了关键字explicit的情况:

/* 示例代码2 */
class Demo
{
    public:
    Demo();                     /* 构造函数1 */
    explicit Demo(double a);        /* 示例代码2 */
    Demo(int a,double b);           /* 示例代码3 */
    ~Demo();
    void Func(void);
    private:
    int value1;
    int value2;
};

在上述构造函数2中由于使用了explicit关键字则无法进行隐式转换即:Demo test;test = 12.2;是无效的!但是我们可以进行显示类型转换如:

Demo test;

test = Demo(12.2); 或者

test = (Demo)12.2;

相关文章

猜您喜欢

  • python生成云词图画红楼梦词云图 使用python生成云词图实现画红楼梦词云图

    想了解使用python生成云词图实现画红楼梦词云图的相关内容吗梦魇762459510在本文为您仔细讲解python生成云词图画红楼梦词云图的相关知识和一些Code实例欢迎阅读和指正我们先划重点:python词云图,词云图制作下面大家一起来学习吧..
  • Java中的BeanInfo 有关Java中的BeanInfo介绍

    想了解有关Java中的BeanInfo介绍的相关内容吗御狐神在本文为您仔细讲解Java中的BeanInfo的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java中的BeanInfo,Java,BeanInfo下面大家一起来学习吧..

网友评论

Copyright 2020 www.sopisoft.net 【绿软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式