`

关于explicit关键字

 
阅读更多

   今天在看一个源程序的时候用到了explicit关键字。在网上查找了一下该关键字的作用。没有进行试验,只是整理了下:

    1.explicit主要和构造函数一起使用.
    2.当explicit修饰构造函数的时候,对于调用该构造函数进行进行 "隐式 "转换的代码将不会通过!

    3.解除explicit的方式,就是使用强制转换。

例如:

class  Test
{
      public:
          Test(int);
          explicit  Test(double)
      private:
          int   nVal;
          double dVal;
};
void Func(const   Test&)
{
   ...
} 

 情况1:

void Func(2); //隐式转换

 这是可以通过的。这种情况相当于

void Func(Test(2));

 情况2:

void Func(2.0);

 这个时候会通不过。需要显示转化:

void Func(Test(2.0));
 

 

分享到:
评论

相关推荐

    C++ Explicit关键字详细解析

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

    C++中的Explicit关键字

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

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

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

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

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

    认识 C++ 中的explicit 关键字

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

    C++底层核心本质总结笔记

    关于explicit关键字,C++中的单参数构造函数默认会提供隐式类型转换,但有时这可能导致意外的类型转换。通过在构造函数前加上explicit,可以禁止这种隐式转换,确保只有显式类型转换是允许的。 在C++中,动态内存...

    C++ explicit通俗解释

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

    C#关键字整理-1

    explicit关键字用于声明用户定义的类型转换运算符,该运算符必须使用强制转换来调用。 23. extern关键字:用于声明在外部实现的方法。示例:private static extern void AVIFileInit(); extern关键字用于声明在...

    C++中explicit作用示例代码

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

    C# CSharp 中所有关键字

    explicit 关键字用于声明用户定义的显式类型转换运算符。例如:class MyType{ public static explicit operator MyType(int i){ // code to convert from int to MyType}} 与隐式转换不同,必须通过类型转换调用...

    c++关键字详解

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

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

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

    C++中explict关键字用法

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

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

    `default`和`explicit`与构造函数相关,`default`用于生成默认参数,`explicit`防止隐式类型转换。 在学习C++的过程中,了解和记忆这些关键字是非常基础且重要的一步。通过实际编写和阅读代码,你会逐渐理解它们在...

    c++关键字解释大全

    - **功能**:`explicit`关键字用于禁止隐式类型转换。 - **用法**:避免非预期的类型转换导致的问题。 #### extern(外部变量) - **功能**:`extern`关键字用于声明变量是在其他文件中定义的。 - **用法**:引用...

    C++思维导图Xmind文件和.png文件(持续更新)

    初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类思维导图xmind文件和.png文件 内存管理(new/delete使用详解) 模板——初识 STL——string类 STL——vector STL适配器——stack && ...

Global site tag (gtag.js) - Google Analytics