3
コンパイラは、多重定義された接尾辞演算子を最適化し、接頭辞演算子に置き換えることを許可されていますか?次のコードでは、ほとんどのコンパイラは++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("*");