C/C++
iflytek@ruimin
求求你给我开个接口吧
展开
-
多态实现原理
函数重载:在编译期确定的,允许在同一作用域中声明多个功能类似的同名函数,这些函数的参数列表,参数个数或参数类型或者参数顺序都不一样,不能通过返回值类型来区别重载。原创 2024-07-09 17:23:32 · 307 阅读 · 0 评论 -
虚函数表和虚函数指针
虚函数表:它是一个虚函数地址的数组,一个类中可能有多个虚函数,这些虚函数会构成一个数组,虚函数表就是这个数组,记录虚函数地址,指向.text中具体代码的一个位置作用:用来实现多态(一个接口不同形态):静态多态(编译期确定)动态多态(虚继承重写,运行时才确定调用哪个函数,基类指针指向的具体对象类型是子类还是基类?如果是基类,从基类虚函数表找函数指针;如果是子类,从子类虚函数表找函数指针。原创 2024-07-08 16:36:17 · 303 阅读 · 0 评论 -
C++——虚析构函数
在继承下,为了使子类析构函数能够得到正常调用,需要将基类的析构函数设置为虚析构函数。设置虚析构函数是有代价的,编译器会为类生成虚函数表,每个对象都需要持有vptr。子类对象指针赋值给基类指针,在调用析构函数时,子类对象的析构不会被调用。什么情况下虚析构函数不正常调用?原创 2024-07-05 16:29:09 · 168 阅读 · 0 评论 -
C++——拷贝构造函数
如果不提供位拷贝(浅拷贝),那么会造成一下问题1、两个不同的指针指向同一块堆上资源,可能造成重复析构,程序崩溃2、文件句柄,socket重复关闭3、虚函数表指针丢失编译器编译的时候默认生成的,如果不生成会和C++11语法冲突以下情况不得不生成:(1)类成员变量也是一个类(2)类继承一个基类,该基类有默认拷贝构造函数,编译器也会给子类生成一个(3)类成员中虚函数(4)类继承自基类,基类中有虚函数。原创 2024-07-05 15:58:12 · 160 阅读 · 0 评论 -
C++——深拷贝与浅拷贝
1、用同类的对象构建一个新的类对象2、函数传参为类对象:值传递,类的复制本质分为一下几种运算=赋值运算操作符拷贝构造,位赋值以上三种情况都是浅拷贝,对象中的成员函数数据的简单运算(基于上面的运算和三种拷贝情况)原创 2024-07-05 14:55:20 · 217 阅读 · 0 评论 -
C++——C++什么时候生成默认构造函数?
即便里面包含成员变量,成员变量是基础类型,还是不会生成默认构造函数,编译器也不知道用什么值初始化。虚基类表记录了类继承的所有的虚基类子对象在本类定义的对象内的偏移位置。(2)如果父类没有提供默认的构造函数,子类也无需提供默认构造函数。(3)如果父类提供了默认构造函数,子类不得不生成默认构造函数。为了实现虚继承,对象初始化阶段需要维护一个指向虚基类的指针。类所有对象需要保存一个指向该虚函数表的指针。不得不提供默认构造函数来初始化虚函数表指针。空的类定义,不会生成构造函数,没有意义。3、类内定义了虚函数。原创 2024-07-05 13:40:46 · 214 阅读 · 0 评论 -
C++——malloc、free和new、delete的区别
malloc、free是 C语言库函数new,delete是C++中操作符。原创 2024-07-05 11:01:47 · 424 阅读 · 0 评论 -
C++——关键字override,final的作用
C++11引入的关键字,为了解决下面两个问题1.虚函数复写:不能阻止某个虚函数进一步重写本意写一个新函数,错误重写基类虚函数(子类virtual(关键字可省略))本意是去覆写基类的虚函数,由于签名不一致(比如函数名不一样,参数名不一样,关键字不一样),在子类中重新构建新的虚函数2.类继承不能阻止某一个类进一步派生。原创 2024-07-03 12:35:16 · 127 阅读 · 0 评论 -
C++——extern关键字作用
extern会引用一个还没声明的变量或者函数,这个变量和函数在其他地方声明了,通常是全局变量或其他函数(不是静态),可能在当前文件,也可能在其他文件。原创 2024-07-03 11:33:38 · 293 阅读 · 0 评论 -
C++——const关键字的作用
局部const:栈区,可以通过指针修改全局const:静态储存区,不能用指针修改,会报错,C/C++都不能修改指针:char* const ptr:常量指针,指针不能修改,ptr = astr;ptr = bstr;//报错,这个指针只能指这个常量(值)const char* ptr:指针常量,这个类型的内容不能改,const char* ptr = "hello world";//指针指向的这块内存的值(hello world)不能修改,ptr[0] = 'a';//报错。原创 2024-06-27 00:17:07 · 257 阅读 · 0 评论