网站 开发 合同,怎么做原创动漫视频网站,网站建设平台源码提供,网站设计动画文章目录 基类指针指向派生类对象#xff0c;基类指针的首地址永远指向子类从基类继承的基类起始地址。代码代码2 基类指针指向派生类对象#xff0c;基类指针的首地址永远指向子类从基类继承的基类起始地址。
代码
#include iostream
using namespace std;class b… 文章目录 基类指针指向派生类对象基类指针的首地址永远指向子类从基类继承的基类起始地址。代码代码2 基类指针指向派生类对象基类指针的首地址永远指向子类从基类继承的基类起始地址。
代码
#include iostream
using namespace std;class base
{
public:void show() { cout base:: show; }
};class derive:public base
{
public:virtual void show() { cout derive:: show; }
};int main()
{base* p new derive;p-show();delete p;
}以上代码在调用delete 的时候出错因为在调用deletes时传入的地址和我么预想的不一样才会导致软件崩溃
代码2
#include iostream
using namespace std;class base
{
public:void show() { cout base:: showendl; }void operator delete(void *p){cout operator delete p p endl;free(p);}
};class derive:public base
{
public:virtual void show() { cout derive:: show; }void* operator new (size_t size){void* p malloc(size);cout operator new p endl;return p;}
};int main()
{base* p new derive;p-show();delete p;
}综上子类带虚函数而基类不带虚函数是一件非常危险的操作编译器对指针的指向超出我们的预期往往导致很难排查的问题