自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (1)
  • 收藏
  • 关注

原创 “深度探索c++对象模型”第七章

为对应对异常,需要所谓的RAAI。或者使用scoped_ptr。出错了,还是让程序就地死亡比较好吧。

2023-03-07 09:39:12 41

原创 “深度探索c++对象模型”第六章

全局变量(类对象)在编译期间为0,只有在程序启动后才被调用构造函数。new内部调用malloc,delete内部调用free。申请大小为0的内存不会出错,而是返回一个1byte的内存。这里不能写“delete a;”,因为会释放内存。申请大小为负数也不出错,可能和处理0的方式类似?,delete&&free也一样。临时对象看的有点昏。new比malloc。

2023-03-06 17:00:22 28

原创 “深度探索c++对象模型”第五章

基类构造函数中调用virtual函数,会执行自身的virtual函数。这个顺序保证在构造过程中,对象先是一个根基类,然后是第二个基类,一直到当前对象自己。:a)编译器允许不实现 b) 实现了也不算错 c) 可以静态调用 d)不能多态调用。按规定,F()调用应该是A::F(),但是B在构造在A的vptr设置之前。如果类:没有在初始化列表但有默认构造函数,调用该构造函数。析构函数里的调用顺序和构造函数里的正好相反。类的成员变量或基类有析构函数时,编译器会。纯虚函数,这真是令人难以言表啊。

2023-03-05 16:04:03 62

原创 “深度探索c++对象模型”第四章

非成员函数,静态/非静态成员函数的调用成本是一样的;虚拟函数增加一些成本,因为要通过vptr转换到实际函数。成员函数加上this指针,名字mangling。指向0的指针可以调用静态成员函数。保证同一函数一直在同一索引下。vptr:指向虚表的指针。1:函数在虚表的下标。

2023-03-04 17:34:01 66

原创 “深度探索c++对象模型”第三章

空间点的定义,Point2D和Point3D。如果定义成继承关系,确实会引入不少额外开销,如vtbl&&vptr。内存大小重要时,还不如分开定义好。变量名和typedef还是不冲突的为好,如果有冲突,类内部的就加上类名字以区别。这个有点意思,继承可能导致子类占用更多的空间。这样看,继承有时候还不如包含呢。通过对象和指针访问成员变量的效率是一样的,忽略虚拟继承吧。成员变量的布局,标准没有规定,感觉没什么需要特别注意的。指向成员的指针,很少使用了。静态成员变量放在数据段。不看多重继承和虚拟继承。

2023-03-03 12:04:03 24

原创 “深度探索c++对象模型”第二章

编译器扩展每个构造函数,插入对成员变量的默认构造函数的调用。我的理解是,当不能用按位拷贝的方式完成类的对象复制时。拷贝构造函数,还要看吗?实践中基本都把拷贝构造和赋值构造。一句话:基类或成员变量有默认构造函数,或者有虚函数时。先调用基类构造函数,再调用类的成员变量的构造函数。成员变量的构造函数调用顺序和定义它们的顺序一致。也需要正确处理vtbl和vptr。一堆返回值优化,NRV之类。调用带参数的基类的构造函数。需要在构造函数中修改虚表。基类有默认构造函数时。

2023-03-03 06:19:57 53

原创 “深度探索c++对象模型”第一章

在子类给基类赋值时由于有数据切割导致虚表被改,最后调用的是基类成员变量。这里没有赋值过程,(*t)没有改变它指向的内容,它只是寻址。3. c++的多态为什么要用指针或引用?因为直接赋值会修改vptr指向的内容,而指针或引用不会。2. 第23行的(*t).P()调用的是TT的,这种写法倒是有点意外~sizeof(类或对象) = 非静态的数据成员 + _vptr。1. c++对象的数据布局。

2023-03-02 14:08:55 49

Linux高性能服务器编程

Linux高性能服务器编程;简要实用的linux网络服务器编程。内容比较全面。

2018-05-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除