C++
文章平均质量分 79
xiaomiCJH
这个作者很懒,什么都没留下…
展开
-
在类的成员函数中调用delete this
在类的成员函数中能不能调用delete this?答案是肯定的,能调用,而且很多老一点的库都有这种代码。假设这个成员函数名字叫release,而delete this就在这个release方法中被调用,那么这个对象在调用release方法后,还能进行其他操作,如调用该对象的其他方法么?答案仍然是肯定 的,调用release之后还能调用其他的方法,但是有个前提:被调用的方法不涉及这个对象的数据成员和转载 2017-07-28 08:53:02 · 413 阅读 · 0 评论 -
C++对象模型之Default Constructor的建构操作
序言:为了满足编译器的需要, 当类设计者没有显示的声明Default Constructor的时候, 编译器为满足编译程序的需要, 将会按照一定的规则自动生成Default Constructor。一、编译器自动合成Default Constructor的四种情况1、类的成员对象包含默认构造函数2、继承的基类有默认构造函数3、该类有虚函数, 需要初始化virtual funct原创 2017-10-07 19:36:35 · 1249 阅读 · 0 评论 -
C++对象模型之 Copy Constructor的建构操作
是原创 2017-10-07 19:37:10 · 1126 阅读 · 0 评论 -
虚函数与虚继承内存分析
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的转载 2017-09-22 11:37:07 · 260 阅读 · 0 评论 -
vptr的初始化语义学
一、多继承下的调用研究根据上述的模型当中, 我们可以构建出其构造函数的调用顺序Point(x, y);Point3d(x, y, z);Vertex(x, y, z);Vertex3d(x, y, z);源代码:class Point{public: Point(float x = 0.0, float y = 0.0) :_x(x), _y(y){ size();原创 2017-10-26 15:47:22 · 406 阅读 · 0 评论