自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 C++智能指针小记

这个控制块是由shared_prt创建的,同时weak_ptr也是通过shared_prt创建。3其他数据(自定义删除器);

2024-01-01 22:08:55 381

原创 C++对象模型(八)

注:如果不使用自己重载的operator new/operator delete,使用::new/:: delete。3.当类中有构造函数的时候,加括号和不加都一样(因为编译器把初始化工作都交给你写的构造函数处理了)2.如果类中有成员变量,则带括号的初始化会把成员变量的有关内存清零,但不是整个对象的内存全部清零。1.有placement new,但是没有对应的placement delete。功能:在已经分配的内存中初始化一个对象。注:手动调用构造函数一般是不可以的。1.new类对象时候加括号的差别。

2023-12-03 16:51:24 21 1

原创 C++对象模型(七)

局部对象的构造和析构只要是出了对象的作用域,编译器就会在适当的时候插入调用对象的析构函数全局对象的构造和析构全局对象在main函数执行之前就被构造完毕,可以在main中使用 全局对象在不给初值的情况下,编译器会把全局变量所在的内存设置成0,局部变量不会这样; 全局变量在编译阶段就会把空间分配出来局部静态对象的构造和析构静态局部对象刚开始也是被初始化为0; 局部静态对象的析构,是在main函数执行结束之后才被调用的,前提是静态局部对象被构造过

2023-12-02 20:36:14 25

原创 C++对象模型(六)

2.如果类成员是一个类类型且该类中有虚构函数。1.如果类成员是一个类类型且该类中有虚构函数。可以查看到编译器生成的构造函数和析构函数。1.继承一个基类且基类中有析构函数。2.继承一个基类且基类中有析构函数。

2023-11-30 23:13:07 19 1

原创 C++对象模型(五.二)

2.this指针调整的目的是让对象指针正确指向对象首地址。1.子类继承了几个父类,子类就有几个虚函数表。一.虚继承下的虚函数。

2023-11-28 23:09:37 15

原创 C++对象模型(五)

动态类型:对象目前所指向的类型(运行的时候才决定的类型);一般只有指针和引用才有动态类型的说法。静态绑定:绑定的是静态类型,所对应的函数或者属性依赖于对象的静态类型,发生在编译期。动态绑定:绑定的是动态类型,所对应的函数或者属性依赖于对象的动态类型,发生在运行期。走的是通过虚函数表来找到虚函数入口地址再去执行函数的,是多态。虚函数的动态绑定,却决于虚函数调用者的动态类型。静态类型:对象定义时的类型,编译期就能确定的。1)普通函数是静态绑定,虚函数是动态绑定。2)缺省参数一般是静态绑定{

2023-11-26 23:32:55 27 1

原创 C++对象模型(四)

2.编译器额外对成员函数增加了一个叫 类名 *const this 的形参,是个指针,指向生成的对象。4.静态成员函数等同于非成员函数,有的需要提供回调函数的场合,可以将静态函数作为回调函数。1.C++语言中,成员函数会被转换成全局函数的调用,普通成员函数是有实际的内存地址的。2.通过对象指针调用虚函数,要通过虚函数表指针查找虚函数表,完成对虚函数的调用。1.通过对象调用虚函数,就像调用普通函数一样,不需要通过虚函数表。1.静态成员函数可以通过类调用或者对象调用。5.静态成员函数也是有地址的。

2023-11-23 00:16:33 26 1

原创 C++对象模型(三)

1.虚基类表一般是8字节(编译器设计的),四个字节为一个单位。每多一个虚基类,虚基类表会多加4个字节。2.存在虚基类表指针(vbptr)1.虚基类在内存布局中放在最后。

2023-11-21 22:33:45 32

原创 C++对象模型(二)

2.某些因素会导致成员变量之间排列不连续,这就是边界调整(字节对齐),调整的目的是提高效率,编译器自动调整。另外,还有个不需要字节对齐,使用#pragam pack(1)[设置成1字节对齐,又是不对齐]1.引入虚函数的时候,会有额外的成本付出(产生虚函数表、对象中会产生虚函数表指针、增加或者扩展构造函数,让虚函数表指针指向虚函数表)1.静态成员变量可以当作一个全局变量,但是他只在类的空间中可见,使用的时候用上类名::静态成员名。1.晚定义的成员变量在内存中有更高的地址。2.父类成员在子类成员前出现。

2023-11-20 21:47:08 32 1

原创 C++对象模型(一)

2.一个类A自己没有拷贝构造函数,但是它的父类中有拷贝构造函数,如果类A涉及到拷贝构造的时候,编译器会合成出拷贝构造函数。1.一个类A中含有类类型的成员变量,这个类类型有拷贝构造函数,当涉及到类A的拷贝构造时编译器会合成书拷贝构造函数。3.一个类A没有拷贝构造函数,但申明了或者继承了虚函数,如果类A涉及到拷贝构造的时候,编译器会合成出拷贝构造函数。4.一个类A没有拷贝构造函数,但该类有虚基类,如果类A涉及到拷贝构造的时候,编译器会合成出拷贝构造函数。5.如果一个类有虚基类,也会合成构造函数。

2023-11-18 21:14:24 21 1

空空如也

空空如也

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

TA关注的人

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