【C++】explicit

C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。
1 是个构造;2 是个默认且隐含的类型转换操作符。
所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。
这样看起来好象很酷, 很方便。 但在某些情况下, 却违背了程序员的本意。 这时候就要在这个构造器前面加上explicit修饰, 指定这个构造器只能被明确的调用/使用, 不能作为类型转换操作符被隐含的使用。

explicit关键字只需用于类内的单参数构造函数前面。由于无参数的构造函数和多参数的构造函数总是显示调用,这种情况在构造函数前加explicit无意义。

 

https://blog.csdn.net/l2563898960/article/details/97769569

https://blog.csdn.net/qq_36570733/article/details/100585625?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-100585625-blog-97769569.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-100585625-blog-97769569.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=6

https://blog.csdn.net/qq_35524916/article/details/58178072?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-58178072-blog-97769569.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-58178072-blog-97769569.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=17

https://blog.csdn.net/weixin_45525272/article/details/105996548

https://blog.csdn.net/chollima/article/details/3486230?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-3486230-blog-58178072.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-3486230-blog-58178072.pc_relevant_aa_2&utm_relevant_index=6

https://blog.csdn.net/qq_37233607/article/details/79051075?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-79051075-blog-58178072.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-79051075-blog-58178072.pc_relevant_aa_2&utm_relevant_index=1

https://blog.csdn.net/fengbingchun/article/details/51168728?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-51168728-blog-79051075.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-51168728-blog-79051075.pc_relevant_aa&utm_relevant_index=3

https://blog.csdn.net/qq_36570733/article/details/100585625?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-100585625-blog-58178072.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-100585625-blog-58178072.pc_relevant_aa_2&utm_relevant_index=9

https://blog.csdn.net/acdnjjjdjkdckjj/article/details/5644573?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-5644573-blog-58178072.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-5644573-blog-58178072.pc_relevant_aa_2&utm_relevant_index=21

posted @ 2022-08-17 10:58  星火-AI  阅读(186)  评论(0编辑  收藏  举报