加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使构造函数显式是一个很好的实践

发布时间:2020-12-16 03:26:07 所属栏目:百科 来源:网络整理
导读:在设计公共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 featu
在设计公共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.:我现在似乎无法想出一个很好的例子,所以任何帮助都会受到赞赏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读