C++ 中的 explicit
关键字主要用于防止不必要的隐式类型转换 (implicit type conversion)。它主要应用于以下两个场景:
- 构造函数 (Constructors)
- 转换运算符 (Conversion Operators) (C++11 之后)
1. 构造函数 (Constructors)
当一个类有一个可以接受单个参数的构造函数时,如果没有 explicit
关键字修饰,这个构造函数就可以被编译器用作隐式类型转换。这意味着你可以将一个与构造函数参数类型相同的值直接赋值给该类的对象,或者在需要该类对象的地方传入一个与参数类型相同的值,编译器会自动调用这个构造函数进行转换。
没有 explicit
的情况(允许隐式转换):
#include <iostream>
class