选哪个?为什么?
*. 下面的程序的输出结果为:( )
class CBaseClass
{
public:
CBaseClass(){
Init();
}
~CBaseClass(void){};
virtual int Init(void){
m_iInitVar = 1;
return 0;
}
int GetResult(void){
return m_iInitVar;
}
int m_iInitVar;
};
class C Derived Class : public CBaseClass
{
public:
C DerivedClass(void) {};
~CDerivedClass(void) {};
virtual int Init(void) {
m_iInitVar = 2;
return 0;
}
};
int main(int argc, _TCHAR* argv[]) {
CBaseClass * pCBaseA = new CBaseClass();
CBaseClass * pCBaseB = new CDerivedClass();
CDerivedClass * pCDerivedClass = new CDerivedClass ();
int i = pCBaseA->GetResult();
int j = pCBaseB->GetResult();
int k = pCDerivedClass ->GetResult();
cout<<i<<","<<j<<","<<k<<endl;
delete pCBaseA;
delete pCBaseB;
delete pCNewDClass;
return 0;
}
A) 1,1,1
B) 1,2,1
C) 1,2,2
D) 2,2,2