ToDo:
http://d.hatena.ne.jp/mowamowa/20070410/1176216368
たぶん ite = が代入か初期化によるかなぁ。
#include <stdio.h> class Ite { public: Ite() : v(0) {} explicit Ite(int v0) : v(v0) {} Ite(const Ite& ite) : v(ite.v) { printf("copy\n"); } Ite operator=(const Ite& ite) { printf("subst\n"); v = ite.v; } const Ite& operator++() { v++; return *this; } Ite operator++(int) { Ite ite(*this); v++; return ite; } private: int v; }; int main() { Ite ite(1), ite2; printf("ite++\n"); ite2 = ite++; printf("++ite\n"); ite2 = ite; ++ite; { printf("ite++\n"); Ite ite2 = ite++; } { printf("++ite\n"); Ite ite2 = ite; ++ite; } }
ざっくり書いたからちゃんと正しい iterator かどうか自信無いので老後の課題。
i@um ~/test> ./a.out ite++ copy subst ++ite subst ite++ copy ++ite copy
でも結果はまぁ予想通りか。
(01:03)
前 | 2007年 4月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。