explicit 是 C++ 中的一个关键字,用于修饰构造函数和转换运算符。它用来防止隐式类型转换和拷贝初始化,从而避免程序员可能犯的错误,并确保代码的行为符合预期。
explicit
当你定义一个单参数的构造函数(或除了第一个参数外其他都可以有默认值的构造函数)时,编译器会认为这个构造函数是一个隐式类型转换的手段。也就是说,如果有一个类 A,并且它有一个接受 int 类型参数的构造函数,那么你可以直接用一个 int 来初始化 A 的对象,而不需要显式的构造函数调用:
A
int
如果你不希望这种隐式转换发生,就可以使用 explicit 关键字来声明构造函数:
从 C++11 开始,你也可以用 explicit 来修饰用户定义的类型转换运算符,以防止它们在不应该的情况下被隐式调用。
通过正确地使用 explicit,你可以使你的代码更加健壮和易于理解。
同时,我在学习Qt的应用开发过程中,Qt Creator这款IDE更强调软件开发者在构造函数有参数的情况下必须使用 explicit
关键词。否则,IDE编辑器的代码编辑区会报错,Qt现在更强调进行显示转换。
期待下一篇文章
Popular Ranking
Popular Events
explicit
是 C++ 中的一个关键字,用于修饰构造函数和转换运算符。它用来防止隐式类型转换和拷贝初始化,从而避免程序员可能犯的错误,并确保代码的行为符合预期。使用
explicit
修饰构造函数当你定义一个单参数的构造函数(或除了第一个参数外其他都可以有默认值的构造函数)时,编译器会认为这个构造函数是一个隐式类型转换的手段。也就是说,如果有一个类
A
,并且它有一个接受int
类型参数的构造函数,那么你可以直接用一个int
来初始化A
的对象,而不需要显式的构造函数调用:如果你不希望这种隐式转换发生,就可以使用
explicit
关键字来声明构造函数:使用
explicit
修饰转换运算符 (C++11)从 C++11 开始,你也可以用
explicit
来修饰用户定义的类型转换运算符,以防止它们在不应该的情况下被隐式调用。总结
explicit
关键字可以帮助你避免不必要的隐式类型转换。通过正确地使用
explicit
,你可以使你的代码更加健壮和易于理解。同时,我在学习Qt的应用开发过程中,Qt Creator这款IDE更强调软件开发者在构造函数有参数的情况下必须使用
explicit
关键词。否则,IDE编辑器的代码编辑区会报错,Qt现在更强调进行显示转换。