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.:我现在似乎无法想出一个很好的例子,所以任何帮助都会受到赞赏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |