为什么会得出这结果???????求祥解
#include <stdio.h>
class Value
{
public:Value(int nVal)
{
m_nVal = nVal;
printf("Call Value::Value(int nValue)\n");
}
~Value()
{
printf("1Call Value::~Value()\n");
}
Value & operator =(int nVal)
{
m_nVal = nVal;
printf("1Call Value::operator = \n");
return *this;
}
void Dump()
{
printf("1Value::m_nVal = %d\n", m_nVal);
}
protected:int m_nVal;
};
class Base
{
public:Base()
{
Init();
}
virtual ~Base()
{
Release();
}
virtual void Init()
{
printf("2Call Base::Init()\n");
}
virtual void Release()
{
printf("2Call Base::Release()\n");
}
virtual void Dump()
{
printf("2Call Base::Dump()\n");
}
};
class Derive : public Base
{
public:Derive()
{
printf("3Call Derive::Derive()\n");
}
~Derive()
{
printf("3Call Derive::~Derive()\n");
}
virtual void Init()
{
m_Val = 2; printf("3Call Derive::Init()\n");
}
virtual void Release()
{
printf("3Call Derive::Release()\n");
}
virtual void Dump()
{
m_Val.Dump();
}
protected:static Value m_Val;
};
Value Derive::m_Val = 0;
void DestroyObj(Base* pOb)
{
pOb->Dump();
delete pOb;
}
void main()
{
Derive* pOb = new Derive;
DestroyObj(pOb);
}
输出结果:
Call Value::Value(int nValue)
Call Base::Init()
Call Derive::Derive()
Value::m_nVal=0
Call Derive::~Derive()
Call Base::Release()
Call Value::~Value()