`

c++中的explicit关键字

阅读更多

copy:http://www.azure.com.cn/article.asp?id=335

 

 

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的作用了,将类的构造函数声明为"显示",也就是在声明构造函数的时候前面添加上explicit即可,这样就可以防止这种自动的转换操作,如果我们修改上面的MyClass类的构造函数为显示的,那么下面的代码就不能够编译通过了,如下所示:
class MyClass
{
public:
explicit MyClass( int num );
}
....
MyClass obj = 10; //err,can't non-explict convert

分享到:
评论

相关推荐

    C++中的Explicit关键字

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

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

    在C++中,关键字是预定义的保留词汇,它们具有特殊含义,不能用作变量、函数或其他标识符的名字。了解并掌握C++的关键字对于任何初学者来说都至关重要,因为这些关键字构成了语言的基础框架,直接影响到代码的编写和...

    C++ Explicit关键字详细解析

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

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

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

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

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

    认识 C++ 中的explicit 关键字

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

    C++中explicit作用示例代码

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

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

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

    C++ explicit通俗解释

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

    c++计算机语言关键字.docx

    在C++编程语言中,关键字是具有特殊含义的保留词汇,它们构成了语言的基本构建块。以下是对给定标题和描述中提及的一些C++关键字的详细解释: 1. `asm`: `asm`关键字允许程序员在C++代码中直接插入汇编语言指令。这...

    c++计算机语言关键字.pdf

    C++是一种强类型、面向对象的编程语言,它的语法丰富,包含了许多关键字,这些关键字在程序中具有特殊的含义。以下是对标题和描述中提及的一些C++关键字的详细解释: 1. `asm`:这个关键字允许程序员在C++程序中...

    C语言32以及C++63个关键字及其含义.doc

    - 更多C++关键字包括`explicit`、`friend`、`mutable`、`new`、`operator`、`private`、`protected`、`public`、`reinterpret_cast`、`return`、`static_cast`、`template`、`this`、`throw`、`try`、`typeid`、`...

    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++中explict关键字用法

    在C++编程语言中,`explicit`关键字是一个重要的特性,用于控制类的构造函数的隐式类型转换。这个关键字主要用于防止编译器自动执行单参数构造函数的隐式转换,从而减少潜在的错误和混淆。下面我们将深入探讨`...

    c++关键字详解

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

    C语言32以及C++63个关键字及其含义 (2).pdf

    C语言和C++是两种广泛使用的编程语言,它们的关键字是语言的核心组成部分,用来定义变量、控制流程、声明数据类型等。以下是对C语言32个关键字和C++63个关键字的详细解释: 1. **auto**:C++中的`auto`用于自动推断...

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

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

Global site tag (gtag.js) - Google Analytics