C++中explicit关键字是什么意思?何时以及为何使用它?
大家好!我刚开始学习C++,遇到了`explicit`关键字。我知道它用在构造函数前面,但不太理解它的用途以及应该在什么情况下使用它。
我有一个简单的向量类:
```cpp
class Vector {
public:
Vector(int size) {
data = new int[size];
sz = size;
}
private:
int* data;
int sz;
};
```
我可以写这样的代码:
```cpp
Vector v = 10; // 为什么这能行?!
```
编译器毫无错误地编译了它。但`10`难道不是数字吗?为什么它突然变成了Vector对象?这是某种隐式转换吗?我觉得这很危险,因为我可能不小心把数字传给期望对象的地方,程序会表现得很奇怪。
例如,如果我有这样一个函数:
```cpp
void processVector(Vector v) { /* ... */ }
int main() {
processVector(42); // 错误?还是不是?现在它能工作!
return 0;
}
```
我