// 示例代码:使用 explicit 关键字防止隐式类型转换
class MyClass {
public:
// 构造函数被标记为 explicit,防止隐式类型转换
explicit MyClass(int value) : data(value) {}
int getData() const { return data; }
private:
int data;
};
int main() {
// 正确的显式构造
MyClass obj1(42);
std::cout << "obj1: " << obj1.getData() << std::endl;
// 错误:隐式类型转换被禁止
// MyClass obj2 = 10; // 编译错误
// 正确的显式转换
MyClass obj2 = MyClass(10);
std::cout << "obj2: " << obj2.getData() << std::endl;
return 0;
}
explicit 关键字用于类的构造函数,防止编译器在需要时自动进行隐式类型转换。MyClass 的构造函数被标记为 explicit,因此不能通过隐式转换将一个整数直接转换为 MyClass 对象。explicit,像 MyClass obj2 = 10; 这样的语句会被允许,并且会调用构造函数将 10 转换为 MyClass 对象。但加上 explicit 后,这种隐式转换被禁止,必须显式地调用构造函数,如 MyClass obj2 = MyClass(10);。上一篇:c++选择排序
下一篇:vc++runtime
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站