2010年4月17日土曜日

C++で気になったので(仮想関数)

そういえば、階層の途中で仮想関数にしたら、どうなるんだろう?
ということで、ふと試してみた。

class A {
void func() { cout << "call A" << endl;}
};

class B : public A {
virtual void func() { cout << "call B" << endl; }
};

class C : public B {
void func() { cout << "call C" << endl; }
};

int main() {
Parent* p = new C();
p->func();
Child* c-> new C();
c->func();
}

call A
call C

そこから仮想関数って感じなのか。C#ではどうなんだろう。今度試さねば。

そういえば、とあるC#のテキストではoverrideでのオーバーライドは載っているのに、newでの基底クラスの関数の上書き?打ち消し?は載っていなかった。あんまり使わないんだろうか、new?

Remember the Milkを使い始める。Evernoteにtodoが入っていると分かりにくいので、Remember the Milkに移動。GmailのToDoは結局使わなかったな。便利そうに見えたんだけど。