void　*operator　new(　size_t,　void　*p　)　throw()　{　return　p;在构造函数中,虚拟机制不会发生作用。因为基类的构造函数在派生类构造函数之前执行,当基类构造函数运行时,派生类的数据成员还没有初始化。如果基类构造期间调用的虚函数向下匹配到派生类,派生类的函数理所当然会涉及到本地数据成员,但是那些数据成员还没有初始化,而调用涉及一个对象还没有初始化的部分自然是危险的,因此虚函数不会向下匹配到派生类,而是直接执行基类的函数。下面通过一个例子来证实:#inc...　1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过　vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 em>虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初　题目如下:问下列代码的打印结果为0吗?#include &lt;stdlib.h&gt;#include &lt;iostream&gt;using namespace std;struct CLS{ int m_i; CLS( int i ) : m_i(i){} CLS(em>CLS(0)今天写代码遇到一个问题。如下的结构体:1struct A2{3 string　str;4 int data;5//....　原因1:从存储空间角度这里你需要知道一个概念,那就是虚函数表vtbl,每一个拥有虚成员函数的类都有一个指向虚函数表的指针。对象通过虚函数表里存储的虚函数地址来调用虚函数。那虚函数表指针是什么时候初始化的呢?当然是构造函数。当我们通过new来创建一个对象的时候,第一步是申请需要的内存,第二步就是调用构造函数。试想,如果构造函数是虚函数,那必然需要通过vtbl来找到虚构造函数的入口地址,显然,我们申...　在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct　C180{　C180()　{　foo();　this->foo();　}　virtual　foo()　{　cout　}};struct　C190　:　public　C180{　C190()　{}　virtual　关于vector已经写的差不多了,似乎要接近尾声了,从初始化到如何添加元素再到copy元素都有所涉及,是时候谈一谈内存的释放了。是的,对于数据量很小的vector,完全没必要自己进行主动的释放,因为那样对程序的效率几乎没有影响。但是当vector中存入大量的数据后,并且都数据进行了一些操作,比如删除后,如果我们能积极主动的去释放内存,那么是非常明智的。写到这里,应该明确了size和capacity的1.vector　vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对内存的合理利用与运用的灵活性有很大的帮助。vector的实现技术,关键在于对其大小的控制以及重新配置时的数据移动效率。2.函数成员2.1构造函数:///　Cre...　1、对象在创建的时,由编译器对VPTR指针进行初始化2、只有当对象的构造完全结束后VPTR的指向才最终确定3、父类对象的VPTR指向父类虚函数表4、子类对象的VPTR指向子类虚函数表子类的vptr指针分步完成