c++底层实现分析
HelloElite
这个作者很懒,什么都没留下…
展开
-
关于c++多态性实现的理解过程(给自己看的总结,比较跳跃)
之前在刚接触c++多态性的时候,关于为什么基类指针指向派生类对象,调用的是派生类的虚函数而不是基类的虚函数这一点,脑子的第一反应就是指针。用一个东西做多件事这种抽象性,很明显就是指针的行事作风。但是又没个具体的概念。如果用函数指针,怎么实现呢?很简单,假设虚函数的变量名都对应一个成员变量,在基类的函数指针成员变量里填上对应函数的入口地址,派生类填上另一个函数地址,那就实现多态性了嘛。再想想原创 2017-04-21 21:27:03 · 396 阅读 · 0 评论 -
为什么构造函数中调用的虚函数不具有多态性?
effective c++ 的item9中提到,不要在构造函数中调用虚函数,因为此时的虚函数不具有多态性。 给出的原因是说构造基类的时候,还未初始化派生类的成员变量。而网上很多说法说是虚表未建立。其实,结合类的内存模型,再稍加分析,很容易可以找出更具体的原因。具有虚函数的类的内存结构里除了非静态变量,还有一个虚指针,指向了虚表。 网上说的虚表为建立的说法是不合适的,因为同一个类的所有实例共原创 2017-04-21 21:13:35 · 1242 阅读 · 0 评论