Mat*_*hew 7 c++ temporary object
多年前我相信C与C++相比绝对纯净,因为编译器无法生成任何你无法预测的代码.我现在相信反例包括volatile关键字和内存障碍(在多处理器编程或内存映射硬件设备的设备驱动程序中,其中普通汇编语言甚至比C编译器的优化更纯粹).
目前我正在尝试枚举C++编译器可以执行的不可预测的事情.关于C++的主要抱怨是编译器将隐式实例化临时对象,但我相信这些情况都可以预期.我正在考虑的案例是:
explicit关键字operator ()还有其他人吗?
小智 2
我想“不可预测”的意思是“符合标准但与程序员编写代码时所期望的不同”,对吧?
我想您可以从代码中看到对象被实例化或复制的位置,即使它可能并不明显。不过可能很难理解。
有些东西只是由(所有?)编译器供应商以某些方式实现,但可以以不同的方式完成。例如,后期绑定(又名调用重载的虚拟方法)通常是在后台使用函数指针来实现的。这可能是最快的方法,但我认为可以用不同的方式来完成,这将是意想不到的。我不知道有哪个编译器的做法有所不同。
从 C++ 过于复杂的意义上来说,很多东西都是出乎意料的——几乎没有人能够理解完整的语言。所以意外也取决于你的知识。
| 归档时间: |
|
| 查看次数: |
743 次 |
| 最近记录: |