C++を理解していない。


#include

class A {
public:
virtual ~A() {
std::cout << "Destruct A" << std::endl;
}

virtual void Do() {
std::cout << "Do A" << std::endl;
}
};

class B : public A {
public:
~B() {
std::cout << "Destruct B" << std::endl;
}

void Do() {
std::cout << "Do B" << std::endl;
}
};

class C : public B {
public:
~C() {
std::cout << "Destruct C" << std::endl;
}

void Do() {
std::cout << "Do C" << std::endl;
}
};

main()
{
C c;
c.Do();
}


> Do C
> Destruct C
> Destruct B
> Destruct A
自分はどうやらC++を全く理解していないようです\(^0^)/
基底クラスのどっかでvirtualが宣言されてれば、
以降のクラスではvirtual付けなくてもオーバーライドできたのね
(B::DoにvirtualつけなくてもCでオーバーライド出来る)。
あとデストラクタも。


知らなすぎだろ俺。