`
美丽的小岛
  • 浏览: 310944 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

C++ explicit关键字

    博客分类:
  • c++
 
阅读更多

C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?

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

  1. class MyClass  
  2. {  
  3. public:  
  4. MyClass( int num );  
  5. }  
  6. //.  
  7. MyClass obj = 10; //ok,convert int to MyClass 

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

  1. MyClass temp(10);  
  2. MyClass obj = temp

上面的所有的C++ explicit关键字相关的操作即是所谓的"隐式转换"。

如果要避免这种自动转换的功能,我们该怎么做呢?嘿嘿这就是关键字explicit的作用了,将类的构造函数声明为"显式",也就是在声明构造函数的时候前面添加上explicit即可,这样就可以防止这种自动的转换操作,如果我们修改上面的MyClass类的构造函数为显式的,那么下面的代码就不能够编译通过了,如下所示:

  1. class MyClass  
  2. {  
  3. public:  
  4. explicit MyClass( int num );  
  5. }  
  6. //.  
  7. MyClass obj = 10; //err,can't non-explict convert 
分享到:
评论

相关推荐

    C++ explicit关键字的应用方法详细讲解

    我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。 C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有”显式”那么必然就...

    C++ Explicit关键字详细解析

    在C++编程语言中,`explicit`关键字是一个非常重要的特性,它主要用于控制类的构造函数如何参与类型转换。本文将详细解析`explicit`关键字的用途、意义以及它如何影响类对象的创建和赋值。 `explicit`关键字用于...

    C++ explicit通俗解释

    C++ explicit关键字在刚学的时候就接触到了,也从各处了解了一些,但始终云里雾里,在闲来无事的时候再仔细研究了一下,自己消化理解了一下,自认为比其他网友总结的精简而不失准确。

    C++关键字汇总 需要的可以下

    了解并掌握C++的关键字对于任何初学者来说都至关重要,因为这些关键字构成了语言的基础框架,直接影响到代码的编写和执行。 首先,我们要明白C++的关键字是用来控制程序流程、声明数据类型、创建类和对象、处理异常...

    C++中的Explicit关键字

    在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下会发现现有的MFC库或者C++标准库中的相关类...

    C++关键字大全(67个).txt

    C++关键字大全(67个) asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float ...

    c++关键字详解

    接下来,explicit关键字用于单参数构造函数,防止隐式类型转换。默认情况下,C++允许通过单参数构造函数将一个类型隐式转换为另一个类型,这可能导致意外的类型转换。例如: ```cpp class MyInt { public: ...

    c++关键字解释大全

    ### C++关键字详解 在C++编程语言中,关键字具有特定的语法意义,它们由编译器识别并赋予特殊含义。下面将详细介绍一系列C++的关键字及其用途。 #### asm(汇编指令) - **功能**:`asm`关键字用于嵌入汇编代码到...

    C++中的explicit关键字实例浅析

    在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类...

    C++基础关键字介绍.docx

    ### C++基础关键字详解 #### 一、引言 C++是一种广泛使用的面向对象的编程语言,它在软件开发、系统编程以及高性能计算等领域扮演着重要角色。掌握C++的关键字是学习这门语言的基础。本文将详细介绍C++中的一些...

    c++关键字(精选)大全.docx

    C++ 关键字大全 C++ 作为一门高效、灵活的编程语言,具有丰富的关键字集合,了解这些关键字的作用和用法是每个 C++ 开发者的必备技能。下面,我们将对 C++ 的关键字进行分类和解释,从基本数据类型到控制流语句,从...

    认识 C++ 中的explicit 关键字

    在C++编程语言中,`explicit`关键字是一个非常重要的修饰符,它用于构造函数,用于控制类型转换的行为。本文将深入探讨`explicit`关键字的作用、使用场景以及它如何帮助避免潜在的错误。 首先,让我们来看一下`...

    C++关键字详细使用

    except explicit extern false finally float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static...

    C++66个关键字的中文含义

    ### C++66个关键字的中文含义详解 #### asm(汇编) - **用途**:允许在C++程序中嵌入汇编代码。 - **语法**:`asm(指令字符串);` - **示例**:如果需要直接控制硬件或者优化性能,可以在C++中插入汇编代码。 ```...

    C++中explicit作用示例代码

    在C++编程语言中,`explicit`关键字是一个非常重要的特性,它主要用于控制构造函数的隐式类型转换。本文将深入探讨`explicit`的作用,并通过示例代码帮助理解其工作原理。 `explicit`关键字用于声明单参数构造函数...

    c/c++拷贝构造函数和关键字explicit详解

    C++中的拷贝构造函数和关键字explicit详解 C++中的拷贝构造函数是一种特殊的构造函数,它用于初始化对象时拷贝另一个对象的内容。拷贝构造函数的格式为`Type::Type(const Type&)`,其中`Type`是类的名称。拷贝构造...

    c++关键字大全.pdf

    19. `explicit`: `explicit`关键字用于禁止隐式类型转换,特别是在构造函数中。 20. `export`: `export`原本是C++标准中用于模板的,但后来由于技术原因被弃用,现代C++中不推荐使用。 21. `extern`: `extern`用于...

Global site tag (gtag.js) - Google Analytics