gpt4 book ai didi

c++11 - C++11 的显式关键字和多参数构造函数

转载 作者:行者123 更新时间:2023-12-05 07:41:45 26 4
gpt4 key购买 nike

一般来说,我听说在带有单个参数的构造函数上使用 explicit 关键字是一种很好的做法。然而,从 C++11 开始,具有多个参数的构造函数可用于隐式转换。因此,将 explicit 关键字应用于 > 0 个参数的所有构造函数是否是一种好习惯?

最佳答案

explicit 的一般规则是,是否要隐式调用此构造函数?

如果是,请不要明示。

如果不是,请明确说明。

对于 1 个参数的 ctors,如果从该类型转换与在需要时将 int 转换为 double 一样无损且无害,则将其设为隐式。

对于 >1 个参数构造函数,确定您是否希望基于 {} 的构造起作用。有时这是个好主意,有时是个坏主意。

在 C++11 和 14 中,需要构造 {} 以便在无法移动或复制类型时从函数返回值。在某些情况下,如果您想出于任何原因避免“隐式 {} 使用”,您将使用标记类型使 {} 比其他方式更明确.

在 C++17 中,真正需要 {} 的理由越来越少,因为纯右值不再是对象,而是构造指令;这意味着 return T(blah) 不会在返回 T 的函数中移动/复制 T,而是直接从 构造它>废话

什么时候你想阻止 {} 是一个见仁见智的问题,不适合 SO 问答。

关于c++11 - C++11 的显式关键字和多参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45196333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com