C++ explicit 关键词作用

简介: C++ explicit 关键词作用

作用:防止构造函数中的隐式类型转换

#include <iostream>
#include <vector>
using namespace std;
class MyString {
public:
  MyString(const char* str) {
  }
  explicit MyString(int a) {
    mSize = a;
  }
  char* mStr;
  int mSize;
};
void test01() {
  MyString str = "abc";
  MyString str2(10);
  MyString str3 = 10; // 做什么用途?str2字符串为"10"? 字符串长度为10?存在二义性
  // 相当于隐式类型转换 MyString str3 = MyString(10)
  // 不想有二义性那就取消隐式类型转换,构造函数加上explicit关键词
}
相关文章
|
3月前
|
安全 编译器 程序员
【C++ 修饰符关键字 explicit 】掌握C++中的explicit :构造函数行为和初始化综合指南
【C++ 修饰符关键字 explicit 】掌握C++中的explicit :构造函数行为和初始化综合指南
232 3
|
2月前
|
C++
|
3月前
|
编译器 C语言 C++
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(上)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
25 1
|
3月前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
21 2
|
3月前
|
Java 编译器 C语言
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(下)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
21 0
|
3月前
|
C语言 C++
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(中)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
36 0
|
3月前
|
C++
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
|
3月前
|
编译器 C++
[C++ 从入门到精通] 8.构造函数详解、explicit、初始化列表
[C++ 从入门到精通] 8.构造函数详解、explicit、初始化列表
64 0
|
3月前
|
编译器 C++
c++ explicit关键作用
概念引入 构造函数不仅可以构造并初始化对象,对于具有单个参数或者除第一个参数无默认值其余均有默认值的构造函数,还具有类型转换作用。
45 0
|
8月前
|
编译器 C++ 容器
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)(下)
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)