Avatar ·

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; } ``` 我