class A{};
class B:public A{
public:
void f();
int a;
}
int main()
{
A * p=new B();
}
//用p无法访问B类的数据和成员函数,那么这个新建的对象存不存在f()和a?
这个新对象的储存结构仍是类B,但是p是基类对象所以没办法访问f()和a,
所以需要加virtual让f成为虚函数,或者dynamic_cast类型转向子类,
又或者((B*)p)->f(),((B*)p)->a
class CObject
{
public:
virtual int cleanup() = 0;
virtual void setid(int id)=0;
virtual int getid()=0;
virtual int getSize() = 0;
};
class CCharacter:public CObject
{
public:
CCharacter():m_nSize(10){}
int cleanup(){ return 0;}
void setid(int id){ m_id = id;}
int getid(){ return m_id;}
int getSize(){ return m_nSize;}
private:
int m_id;
public:
int m_nSize;
};
int main()
{
CObject *pObject = new CCharacter;
pObject->setid(123);
printf("MSG:id = %d\n",pObject->getid());
cout<<pObject->getSize()<<endl;
system("pause");
return 0;
}