C++
xushibin1995
这个作者很懒,什么都没留下…
展开
-
内存对齐
1、内存对齐的来源计算机的机器字长表示计算机一次读取内存所能读取的字节数,常见的32位操作系统机器字长4字节,而64位操作系统机器字长8字节,以86位操作系统为例,如果不int类型的对齐字长设置为1字节,那么就有可能把int类型的变量存放到在6号到9号内存单元中,使得cpu在读取内存的时候需要两次I/O才能得到完整数据。2、内存对齐的规则数据类型自身的对齐值:char型数据自身对齐值为1字节,short型数据为2字节,int/float型为4字节,double型为8字节。结构体或类的自身对齐值:其原创 2020-05-25 22:13:22 · 333 阅读 · 0 评论 -
在模板类外定义模板成员函数的方法
template<typename T1>class MyObjectT{public: template<typename T2> void Func(T2 v);};template<typename T1> //两个template<>,并且T1在前,T2在后template<typename T2>void MyObjectT<T1>::Func(T2 m){ cout <<原创 2020-05-20 21:05:09 · 932 阅读 · 0 评论 -
static_cast和dynamic_cast详解
类继承关系图注:从图中可以看出,派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性。当我们从派生类向基类转换时,不管用传统的c语言还是c++转换方式都可以百分百转换成功。但是可怕是向下转换类型,也就是我们从基类向派生类转换,当我们采用传统的C语言和c++转换时,就会出现意想不到的情况,因为转换后派生类自己的方法和属性丢失了,一旦我们去调用派生类的方法和属性那就糟糕了,这就是对类...转载 2020-04-23 23:37:24 · 569 阅读 · 0 评论 -
动态多态、静态多态
两者本质不同,静态多态在编译期决定,由模板具现完成,而动态多态在运行期决定,由继承、虚函数实现;所谓联编就是将函数的调用和函数的定义联系起来。分为静态联编和动态联编;静态联编:指在程序编译连接阶段进行联编,使用静态联编实现静态多态:重载(overload) 和 模板。动态联编:具有同接口的函数(函数名和参数列表相同,返回值可以不同),在运行过程中根据指针指向的对象的不同,动态...原创 2020-04-18 21:28:09 · 269 阅读 · 0 评论 -
typedef和define的区别
typedef和define都是替一个对象取一个别名,以此增强程序的可读性,区别如下:原理不同#define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的字符串替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的错误并报错。typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用type...原创 2020-04-17 22:05:44 · 229 阅读 · 0 评论 -
宏定义与const的区别
转载自https://blog.csdn.net/weixin_33757609/article/details/92678674?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158695697819195162511021%2522%252C%2522scm%2522%253A%252220140713.130102334…%2...转载 2020-04-15 21:32:33 · 1974 阅读 · 0 评论 -
new、delete、malloc、free的关系
new、delete、malloc、free的关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动...原创 2020-04-15 20:58:36 · 188 阅读 · 0 评论 -
重载、重写、隐藏(重定义)
重载、重写、隐藏(重定义)1. 重载overload重载要求函数名相同,参数类型(或者个数)不同,返回类型随意可同可不同2. 重写override重写用在类中,和virtual搭配使用,重写要求函数名相同,参数类型和个数也相同,返回类型可以相同可以不同。3. 隐藏隐藏是指子类的函数隐藏父类的同名函数,要求函数名相同,返回类型无影响,如果父类和子类中的两个函数参数类型和个数相同,那么...原创 2020-04-13 22:50:45 · 185 阅读 · 0 评论 -
虚函数
虚函数除了函数名字必须相同外,参数类型也必须相同,但是返回类型可以不同。虚函数的本质:在含有虚函数的对象中会有一个虚指针,虚指针指向一个虚函数表,虚函数表中存放虚函数的入口地址,虚函数表中包含从父类继承的虚函数,如果在子类中重写了父类的虚函数(子类重写父类虚函数可以不加virtual,只要保证与父类中的函数名和参数列表一致即可)那么子类对象就会用自己的虚函数覆盖父类的同名虚函数地址。综上虚函...原创 2020-04-12 22:00:12 · 866 阅读 · 0 评论 -
c++中static的用法
1、static和const修饰类的成员函数不可以同时用static和const修饰类的成员函数。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时const的用法和static是冲突的。2、静态成员的特点:(1)static数据成员在...原创 2020-04-11 19:36:39 · 1311 阅读 · 0 评论