美文网首页
C++ explicit关键字的初步研究

C++ explicit关键字的初步研究

作者: 狗子孙 | 来源:发表于2018-09-14 14:56 被阅读4次

explicit关键字用于修饰构造函数,它不允许构造函数的参数进行隐式的类型转换。构造函数参数的隐式转换有时候很方便,但有时候却容易产生误解,例如下面的代码:

#include <iostream>
class MyString {
public:
    MyString(int l) : len(l) {};
    MyString(char * s) : str(s) {};
    int len;
    char *str;
};
int main(void) {
    MyString s1(10);      // 长度为10,内容未定义
    MyString s2("hehe");  // 内容为hehe,长度未定义
    MyString s3 = 10;     // 长度为10,内容未定义
    MyString s4 = 's';    // 长度为115(s的ASCII)码,内容未定义
    return 0;
}

定义s3和s4的时候,发生了隐式的类型转换,这有时很有用,有时又让人费解,要禁用这里的类型转换,只要将构造函数MyString(int l) : len(l) {};更改成explicit MyString(int l) : len(l) {};即可。

相关文章

  • C++ explicit关键字的初步研究

    explicit关键字用于修饰构造函数,它不允许构造函数的参数进行隐式的类型转换。构造函数参数的隐式转换有时候很方...

  • C++ explicit关键字

    C++ explicit用法 C++中的explicit关键字只能用于修饰只有一个参数的类构造函数。 它的作用是表...

  • C++中关键字explicit简析

    C++中关键字explicit的作用 最近学习Qt经常会遇到explicit关键字,那么简单的说一下吧。 在C++...

  • C++ explicit 关键字

    C++ explicit 关键字 最近学习的过程中经常看到explicit这个关键字, 于是去了解了一下. 没好好...

  • 2020-04-16【explicit】

    explicit关键字详解 C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明...

  • c++ explicit 关键字

    explicit的作用是用来声明类构造函数是显示调用的,而非隐式调用,所以只用于修饰单参构造函数。因为无参构造函数...

  • C++ explicit

    C++中的explicit

  • C++学习笔记目录

    C++初步 C++数据长度 C/C++ 堆 栈 静态 常量 代码 区 static关键字 C++类和对象 C++引...

  • explicit

    C++提供了[关键字]explicit,可以阻止不应该允许的经过[转换构造函数]进行的隐式转换的发生。声明为exp...

  • C++中的explicit关键字

    转载说明:本作者转载于reference用于自我学习和复查,大家请去reference支持原作者。 首先, C++...

网友评论

      本文标题:C++ explicit关键字的初步研究

      本文链接:https://www.haomeiwen.com/subject/wgeogftx.html