gpt4 book ai didi

c++ - 使构造函数显式化是一种好习惯吗

转载 作者:可可西里 更新时间:2023-11-01 17:08:34 25 4
gpt4 key购买 nike

在设计公共(public) API 时,将构造函数设置为显式是一种好的做法吗?

class A {
public:
//explicit A(int i){}
A(int i){}
};

void fun(const A& a) {}

int main() {
// If I use explicit for A constructor, I can prevent this mistake.
// (Or shall I call it as feature?)
fun(10);
}

或者我应该允许隐式转换,以允许用户以更少的输入调用我的 API?

最佳答案

构造函数应该是显式的,除非隐式转换在语义上有意义(例如,将 int 转换为 A 的含义是什么?)。减少打字不应成为指导该决定的标准。考虑可读性(这是隐式转换的主要论据)以及您的代码的理解程度。不直观的隐式转换会让代码的读者摸不着头脑。

P.S.:我现在似乎无法想出一个很好的例子,所以感谢您的帮助。

关于c++ - 使构造函数显式化是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716453/

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