当前位置: 首页 > c++
  • 如果继承体系的基类的virtual成员不多,而且在派生类要重写的部分占了其中的大多数时候,用C++的虚函数机制是比较好的;但是如果继承体系的基类的virtual成员很多,或者是继承体系比较庞大的时候,而且派生类中需要重写的部分比较少,那就用名称查找表,这样效率会高一些,很多的GUI库都是这样的,比如MFC,QT。

    阅读全文
    网站开发 646 人阅读 抢沙发 ,
  • 每一个具有虚函数的类都有一个虚函数表VTABLE,里面按在类中声明的虚函数的顺序存放着虚函数的地址,这个虚函数表VTABLE是这个类的所以对象所共有的,也就是说无论用户声明了多少个类对象,但是这个VTABLE虚函数表只有一个。在每个具有虚函数的类的对象里面都有一个VPTR虚函数指针,这个指针指向VTABLE的首地址,每个类的对象都有这么一种指针。

    阅读全文
    网站开发 598 人阅读 抢沙发 ,
  • 对于非静态数据成员,每个类对象都有自己的拷贝。静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。静态成员函数由于不是与任何的对象相联系,因此它不具有this指针。普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身。

    阅读全文
    网站开发 352 人阅读 抢沙发 ,
  • 通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。

    阅读全文
    网站开发 395 人阅读 抢沙发 ,
  • 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。

    阅读全文
    网站开发 396 人阅读 抢沙发 ,