class ClxBase{
public:
ClxBase() {};
~ClxBase() {cout << "Output from the destructor of class ClxBase!" << endl;};
virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };
};
class ClxDerived : public ClxBase{
public:
ClxDerived() {};
~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; };
void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };
};
int main()
{
public:
ClxBase() {};
~ClxBase() {cout << "Output from the destructor of class ClxBase!" << endl;};
virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };
};
class ClxDerived : public ClxBase{
public:
ClxDerived() {};
~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; };
void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };
};
int main()
{
ClxDerived *p = new ClxDerived; //情况1
//ClxBase *p = new ClxDerived; //情况2
//p->DoSomething();
delete p;
}
(gcc编译)如果是情况1,结果为:
Output from the destructor of class ClxDerived!
Output from the destructor of class ClxBase!
如果是情况2,结果为:
Output from the destructor of class ClxBase!
解析:其实我也不是很能说得清楚,先留着,知道这么个执行结果,以后明白了再补上。