explicit class
时间: 2023-08-27 17:06:18 浏览: 94
classes
引用和引用提供了有关显式构造函数和explicit修饰的示例代码。在C++中,如果一个构造函数被explicit修饰,那么它将只能用于显式创建对象,而不能用于隐式转换。这意味着如果你想使用一个带有explicit构造函数的类来进行隐式转换,编译器将会报错。
例如,在引用的示例中,Test类的构造函数被explicit修饰,因此在创建Test对象时,必须显式地调用构造函数。如果尝试使用隐式转换,编译器将会报错。
另外,引用中的示例展示了使用不同的初始化方法来调用相同构造函数的情况。在这个示例中,通过显式构造函数或者调用构造函数参数类型相符的构造函数来创建对象是允许的。
需要注意的是,显式构造函数通常用于防止不必要的隐式转换,这可以提高代码的可读性和类型安全性。
引用提供了另一个示例,展示了两个类A和B,其中A的构造函数没有被explicit修饰,而B的构造函数被explicit修饰。在main函数中,通过显式调用构造函数来创建A和B的对象,并输出它们的成员变量。
总之,explicit修饰的构造函数只能通过显式调用来创建对象,而不会进行隐式转换。这在一些情况下可以提高代码的清晰度和安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++ explicit 使用方法](https://blog.csdn.net/catalpeak/article/details/105532859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [c++中的explicit](https://blog.csdn.net/www_dong/article/details/112300085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文