【发布时间】:2017-01-25 13:36:17
【问题描述】:
是否允许编译器优化重载的后缀运算符并将其替换为前缀运算符? (前提是编译器知道重载函数的作用)
例如,在以下代码中,大多数编译器将i++ 视为++i 并生成相同的程序集。
for(int i=0; i<5; i++)
printf("*");
那么,下面的代码可以同样适用吗?
class Integer {
int data;
Integer& operator++() { ++data; return *this; }
Integer operator++(int) { Integer ret = *(this); ++(*this); return ret; }
// And more overloads...
};
for(Integer i=0; i<5; i++)
printf("*");
【问题讨论】:
标签: c++ operator-overloading compiler-optimization