C 操作员在具有构造函数转换时过载
C++ operators overloading when having constructor conversion
所以我不太确定标题是否很好地描述了问题。从本质上讲,我想知道我是否有A
类,该类具有const &
的构造函数,来自B
和C
类型,例如,如果我有操作员*=
,则它将同时使用A *= A
,A *= B
和A *= C
。现在,如果使用Sfinae,我可以为三种情况中的每一个单独编写,其中单个A *= B
和A *= C
可能只是一个很小的余量,我是否应该费心地实施或仅对A *= A
实施就足够了?
可能只是一个很小的余量,我什至应该打扰实施
这是决策过程:
- 我的代码有效吗?
是。
- 我的用户是否抱怨我的程序或库的操作缓慢?例如,他们没有病毒扫描仪,例如,所有可用的CPU并击中磁盘吗?
是的,他们真的很合理地抱怨。
- 我是否对代码进行了介绍并将问题范围缩小到这个过载操作员?
是
- 真的吗?我不相信你 - 请再次检查。
不,真的是。
- 好吧,我想您最好实现该额外的操作员。恭喜,现在您还有另一个代码路径可以在本软件的余生中进行调试和维护。
俗话说,"早期优化是各种邪恶的根源"。它只是为您的同事提供工作,并使您将时间集中在所有错误的地方。
相关文章:
- 为什么在使用转换构造函数赋值后调用C++类的析构函数?
- enable_if转换构造函数(静态强制转换,is_base_of)
- 为什么我需要在转换构造函数上引用 this->?
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- 为什么不对转换构造函数进行隐式强制转换?
- 转换构造函数和运算符都存在且涉及显式性时的行为
- C++ 03 类模板 这是转换构造函数还是转换运算符?以及如何声明解决此问题的方法
- 使用完美转发的模板转换构造函数
- 转换构造函数的参数可以隐式转换吗?
- std::变量转换构造函数行为
- 隐式用户定义的转换不起作用,因为在编译C 时无法识别运算符和转换构造函数
- 为什么不调用模板类中的转换构造函数?
- 转换构造函数的隐式参数
- 转换构造函数:您如何解释C 中给定不同参数的函数
- C++变体:为什么转换构造函数需要大小.(类型)为非零
- C++变体用bool转换构造函数
- 在重载解析期间调用转换运算符,而不是在 c++17 中转换构造函数
- 为什么在没有赋值运算符的情况下调用转换构造函数
- 如何将转换构造函数与指针一起使用?
- 为什么在调用隐式类型转换构造函数之后直接是驱动器