首页 > 编程知识 正文

农商银行怎么绑定动态口令,qq动态密码有什么用

时间:2023-05-03 19:56:48 阅读:27215 作者:196

虚函数中不能实现的函数是什么?虚函数依赖:

首先,要成为虚函数,该函数地址必须存储在虚函数表中。

1 .虚函数生成地址并存储在vftable中

虚函数表的地址存储在vfptr中,vfptr置于对象的存储器中。

2 .对象是否存在(vfptr - vftable -虚函数地址) ) ) ) ) ) ) )。

构造函数不能实现成虚函数。

由于构造函数已完成,因此生成了对象。

1.virtual构造函数不行!

2 .在构造函数中,调用虚函数(调用的函数是静态绑定的)不会动态绑定

派生类对象的构造过程

1 .首先调用基类的构造函数

2 .调用派生类的构造函数

static静态成员方法不可以实现成虚函数

虚拟静态是错误的!

因为静态方法的调用与对象无关! 静态方法也不需要对象!

析构函数可以实现成虚函数。

因为调用析构函数时,对象存在!

析构函数

http://www.Sina.com/http://www.Sina.com /

new的功能是打开内存并调用相应的构造函数来创建对象。 http://www.Sina.com/http://www.Sina.com /

现在只调用基类的析构函数,自由对象空间。 但是,堆起来的内存是谁打扫?

派生类的析构函数负责,但没有调用!

因为pb的类型是Base型,所以delete pb的时候去Base型中找析构函数。 因为析构函数是普通函数,所以调用的析构函数是Base类型。 是静态绑定。静态绑定,调用的是Base作用域下的show方法。

现在我们把代码进行改变

派生类析构函数不必担心名称与基类析构函数的名称不同,析构函数必须与类名相同。我们发现析构的时候派生类的析构函数没有被调用!!涉及内存泄漏了!!!

现在在delete pb的时候,如果pb是基类Base类型,编译器就会到Base的作用域下看Base的析构函数,如果发现Base的析构函数是虚函数,编译器就会对析构函数的调用进行动态绑定基类的虚函数表包含两个虚函数的地址: base :3360到Base:show。

派生类的虚函数表包含两个虚函数的地址: derive:3360 ̄derive (同名基类析构函数)和Base:show。

派生类对象的结构如下:

放在Derive的虚函数表中的一定是Dervie的虚结构函数。 所以最终调用的是派生类的析构函数。 http://www.Sina.com/http://www.Sina.com /

如果基类指针(请参见)指向从堆上的new导出的派生类对象,则delete pb )基类指针在调用析构函数时必须发生动态绑定,否则派生类的析构函数

动态绑定派生类的析构函数一点机会都没有被调用

一定不是!

在有对象之前,不会发生动态绑定。 3358www.Sina.com/(在构造函数中调用其他函数(虚)不会发生动态绑定)所以我们需要把基类的析构函数定义成虚析构函数

class base { public : base (int data=0) :ma ) data ) {}virtual void show ) { cout 'Base:show ) ' endl; }protected:int ma; (; class derive 3360 public base { public : derive (int data=0) : base (data ),MB (data ) {}void show ) { cout ' derive int main () {Base b; 驱动d; //静态绑定对象本身调用虚函数,静态绑定b.show (); //虚函数call Base:show d.show (; //虚函数call Derive:show//动态绑定(需要从指针调用虚函数) Base *pb1=b; //指向哪个对象、访问哪个对象的虚函数指针--"虚函数表(动态绑定) pb1-show ); Base *pb2=d; pb2-show (; //动态绑定(需要从引用变量调用虚函数)指针和引用与基础相似的Base rb1=b; Rb1 .表演(); Base rb2=d; rb2.show (; //动态绑定(只有在用指针或引用变量调用虚函数时才发生动态绑定) Derive *pd1=d; pd1-show (; 驱动rd1=d; rd1.show (; 驱动* pd2=(驱动* ) b; //派生类指针指向基对象是不行的。 我们用力转动该类型//实际上内存中只有一个基对象,派生类对象pd2-show (); 不是//动态绑定,因为pd2的类型是Derive,那去看看Derive的范围,show是虚数函数,所以不是动态绑定//那就去取pd2指向的对象b的前4字节的vfptr -进行访问由于该内存上只有基本对象,//最终访问的也是Base vftable

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。