cpp基础
文章平均质量分 52
包括一些cpp基础以及一些面试题。
早八
简单 进取 笃志 务实
展开
-
cpp内存模型
C++ 内存 分为 5 个区域: 堆、栈、静态存储区、常量存储区、代码区(1)堆heap用于存放动态分配的空间,由程序员手动申请和释放,编译器不用去管在堆开辟的空间如果不注意释放,可能会导致内存泄漏的问题堆是向高地址生长(2)栈stack(后进先出)用于存放局部变量、函数参数、局部常量由编译器自动申请、释放和管理栈是向低地址生长的。(3)静态存储区全局静态变量、局部静态变量、全局变量、虚函数表(4)常量存储区存储全局常量、常量数组、函数指针函数也有函数指针,就是指向函数的入口地址原创 2022-05-03 21:49:44 · 571 阅读 · 0 评论 -
cpp面向对象三大特性
C++面向对象的三大特性:继承、多态、封装继承子类可以直接使用父类的属性和方法。优点:减少代码的重复性\冗余继承是多态的前提增加了类的耦合性缺点:继承在编译时刻就定义,无法在运行时改变父类继承的实现父类通常定义了子类的部分方法,父类的改变可能影响子类的行为TODO虚继承:解决多重继承中的二义性问题,维护了一张虚基表多态C++多态分为运行时多态和编译期多态静态多态在编译期就确定主要通过模板实现,以及函数重载、宏定义,也是实现静态多态的方法动态多态通过虚函原创 2022-05-03 21:46:10 · 1219 阅读 · 0 评论 -
cpp vector
vector动态空间,内部机制会自动扩充空间维护一个线性、连续的内存空间vector的数据结构:三个指针[iteratorHead, iteratorElementTail, iteratorTail]iteratorHead 指向当前空间的首地址iteratorElementTail 指向当前空间最后一个元素的地址iteratorTail 指向当前空间的结束地址如,vector = {1,2,3,4,5,6}如果先开辟4个空间那么第二次double开辟了8空间因而itera原创 2022-05-03 21:31:33 · 1277 阅读 · 0 评论 -
cpp/c new/delete和malloc/free
new/delete 是操作符malloc/free 是库函数new/delete 的执行有两个过程:new: 分配未初始化的空间(malloc) --> 使用对象的构造函数进行初始化 --> 返回空间首地址分配出错则直接抛异常,并且delete释放delete:使用对象的析构函数进行析构 --> 回收内存空间(free)因此:new得到的是 经过初始化的空间malloc 得到的是 未经过初始化的空间new是new一个类型,malloc是malloc一个长度的空间对于原创 2022-05-03 21:30:33 · 239 阅读 · 0 评论 -
cpp声明和定义
《C++Primer》第四版 2.3.5节中这么说到:①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。extern关键字声明不分配存储空间;③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。====1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他地方定义了。例如:extern int i; /原创 2022-05-03 21:28:58 · 697 阅读 · 0 评论 -
cpp指针和引用
区别:指针是一个具体的实体,指向一个对象引用是一个对象的别名指针的内容可以改变,即指向可以改变引用一经初始化就不能更改int a = 0,b = 20;int& yin = a; // 这时候,符号yin和符号a都指向同一个地址yin = b; // 这时候,yin仍是和a指向同一个地址空间,但是值改变了,变为b的值,即20sizeof(引用)得到的是对象的大小sizeof(指针)得到的是指针本身的大小作为参数传递时,指针传递的实质是 指针地址 的传递:然后 相当于是 把原创 2022-05-03 21:13:50 · 486 阅读 · 0 评论 -
cpp多态
什么是多态?顾名思义就是同一个事物在不同场景下的多种形态。多态静态多态:编译器在编译期间完成函数重载相同的函数名根据调用参数的不同(参数类型,参数长度),不可根据返回值来判断重载根据实参类型选择调用合适的函数合适则调用不合适则警告或者报错泛型编程模板template动态多态:在程序运行时根据基类的引用或指针 所指向的对象 来确定自己该调用哪一个类的虚函数(因为对象的引用在程序中是变换的,因此是运行时确定)虚函数动态多态的条件:基类中必须包含虚函数原创 2022-05-03 20:59:42 · 290 阅读 · 0 评论 -
cpp常见一些关键字(面试)
static 关键字控制变量的存储方式和可见性作用1:修饰局部变量局部变量放在程序的栈区,生命周期在所包含的语句块执行结束时也结束了;如果使用static关键字来修饰的话。该变量的会存放在静态存储区,生命周期会一直延续到整个程序的执行结束。但是,虽然其存储区和生命周期改变了,但是其作用域没有发生改变。作用2:修饰全局变量全局变量本就放在静态存储区;全局变量可以在本文件中被访问到,也可以在工程中的其他文件访问(在那些文件中添加extern声明即可)使用static修饰全局变量,会改变原创 2022-05-03 20:57:40 · 474 阅读 · 0 评论