#include<iostream>
using namespace std;
class CObj{
public:
CObj()
{
cout<<"CObj::CObj()"<<endl;
}
virtual ~CObj()
{
cout<<"CObj::~CObj()"<<endl;
}
virtual void virfunc()
{
cout<<"CObj::virfunc()"<<endl;
}
};
class CDocument: public CObj{
public:
CDocument()
{
cout<<"CDocument::CDocument()"<<endl;
}
~CDocument()
{
cout<<"CDocument::~CDocument()"<<endl;
}
void virfunc()
{
cout<<"CDocument::virfunc()"<<endl;
}
void func()
{
cout<<"CDocument::func()"<<endl;
virfunc();
}
};
class CMydoc: public CDocument
{
public:
CMydoc()
{
cout<<"CMydoc::CMydoc()"<<endl;
}
~CMydoc()
{
cout<<"CMydoc::~CMydoc()"<<endl;
}
void virfunc()
{
cout<<"CMydoc::virfunc()"<<endl;
}
};
int main()
{
CDocument* ptr = new CMydoc();
ptr->func();
delete ptr;
CMydoc mydoc;
mydoc.func();
((CDocument*)(&mydoc))->func();
return 0;
}
输出:
CObj::CObj()
CDocument::CDocument()
CMydoc::CMydoc()
CDocument::func()
CMydoc::virfunc()
CMydoc::~CMydoc()
CDocument::~CDocument()
CObj::~CObj()
CObj::CObj()
CDocument::CDocument()
CMydoc::CMydoc()
CDocument::func()
CMydoc::virfunc()
CDocument::func()
CMydoc::virfunc()
CMydoc::~CMydoc()
CDocument::~CDocument()
CObj::~CObj()
Program ended with exit code: 0
#include<iostream>
#include<vector>
using namespace std;
class A
{
public:
virtual void func()
{
cout<<"A::func()"<<endl;
}
};
class B: public A
{
public:
void func()
{
cout<<"B::func()"<<endl;
}
};
int main()
{
B b;
A c = b;
c.func();
A &a = b;
a.func();
A *d = &b;
d->func();
return 0;
}
输出:
B::func()
A::func()
B::func()
Program ended with exit code: 0