// 示例代码:使用 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 obj3 = MyClass(10); // 显式构造,正确
std::cout << "obj3: " << obj3.getData() << std::endl;
return 0;
}
explicit 关键词用于修饰单参数构造函数,防止编译器自动进行隐式类型转换。MyClass 的构造函数被声明为 explicit,因此不能通过隐式转换从 int 类型创建 MyClass 对象。explicit,则可以使用类似 MyClass obj2 = 10; 的语句进行隐式转换,但这可能会导致意外的行为。上一篇:c++helloworld代码
下一篇:string在c++中怎么用
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站