
C++
PinkBananA_
不是机会太少而是能力太小
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】new和malloc的区别
new和malloc的区别 1.申请的内存所在位置 new操作符从自由存储区上为对象动态分配内存空间,而malloc从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new进行内存申请,该内存即为自由存储区。而堆是操作系统所维护的一块特殊内存,用于程序的动态内存分配。C语言使用malloc从堆上分配内存,使用free释放对应内存。 ...原创 2019-06-11 11:24:27 · 2053 阅读 · 0 评论 -
【C++】struct和class的区别
struct和class的区别 1.C语言中无法使用struct定义空结构体,而C++中可以使用class定义空类,其大小为1 2.struct默认的成员访问权限是public,而class默认的成员访问权限是private 3.struct默认的继承访问权限是public,而class默认的继承访问权限是private 4.class可用于定义模板参数,而...原创 2019-07-21 10:47:01 · 403 阅读 · 0 评论 -
【C++】宏、inline函数、static修饰的函数、普通函数的区别
宏和inline函数的区别 1、 宏是编译阶段处理的,纯粹是字符串替换(坑确实很多,尤其是在表达式替换的时候),没有任何的类型检查等,十分的不安全;而 inline 函数的处理是发生在编译阶段的,有完整的语句类型检查,比宏更安全 2、 宏是无法调试的, inline 函数在 debug 版本下和普通函数一样,出了问题很方便进行断点调试,定位问题 3、 大量的宏很不方便去阅...原创 2019-07-21 10:28:08 · 471 阅读 · 0 评论 -
【C++】const用法总结
一、C语言中 1.const修饰的是常变量,存放在代码段,仅仅是在编译阶段看常变量是否做左值,其他处理和普通变量一样; 2.若修饰全局变量,其属性是global。 二、C++中 1.const修饰的量称为常量,在编译阶段将用到常量的地方替换成常量初始化的值; 注:(1)一定要初始化,因为要做替换;(2)不能做左值;(3)不能间接修改,杜绝间...原创 2019-07-20 19:03:10 · 228 阅读 · 0 评论 -
【C++】函数调用堆栈
函数调用堆栈过程: 1.实参从右向左入栈,为形参初始化; 2.将下一条指令地址入栈; 3.压入调用方函数的栈底指针寄存器的值,即栈底地址; 4.将edp移动到被调用方栈底; 5.跳转到被调用方函数栈帧,开辟被调用方函数的运行空间,并初始化为0xcccc cccc。...原创 2019-07-20 18:44:19 · 641 阅读 · 0 评论 -
【C++】函数调用约定、函数返回值的返回方式
C++函数调用约定有4种: 1._cdecl C标准调用约定,也是默认调用约定 2._stdcall Windows下的标准调用约定 3._fastcall 快速调用约定 4._thiscall 类成员方法的调用约定_cdecl调用约定生成的函数符号:?函数名@@YAHHH@Z YA代表_cdecl函数约定,YG代表_stdcall函数约定,Y...原创 2019-07-20 18:04:01 · 771 阅读 · 0 评论 -
【C++】预编译、编译、汇编、链接
首先思考下面的问题:为什么要有编译链接呢? 有两点原因:1.编译器无法直接运行.c和.cpp文件,因此需要将源文件转化为计算机可以识别的二进制文件;2.如果想要运行一段代码,就会产生进程,进程是在内存中,而源文件存放在内存中,因此需要编译链接,将文件加载到内存中,CPU才能执行。 编译链接分为4个阶段,接下来具体看每个阶段做了什么事情。 1.预编译-->...原创 2019-07-18 19:18:12 · 732 阅读 · 0 评论 -
【C++】同名函数的关系
1.重载 overload:同作用域、同函数名、参数列表不同。 同函数名保证统一接口。返回值不同不能构成重载,因为在参数列表相同的情况下,编译器不知道调用哪一个函数。因此重载是靠形参提供支持的,包括不同的形参个数以及类型。 2.隐藏(重定义) overhide:在继承关系下的不同作用域中,子类中的同名函数隐藏了父类中所有的同名函数。隐藏后父类中同名函数无法访问,若要访问...原创 2019-07-20 11:42:15 · 444 阅读 · 0 评论 -
【C++】写时拷贝技术(copy-on-write)
写时拷贝的思想是在复制原来的内容时,如果复制后不会对原来的内容做出改变(即只读),就不会直接复制过去,而是建立一个指针指向原来的内存,也就是浅拷贝。如果要修改原来内存上的内容,就需要重新分配内存并将原来内存上的内容拷贝到新内存上,再进行修改,即深拷贝。 1.C++的写时拷贝技术 C++中的写时拷贝技术是通过“引用计数”来实现的。也就是说,在每次分配内存时,会多分配4个字...原创 2019-07-19 19:50:37 · 1069 阅读 · 0 评论 -
【C++】面向过程和面向对象思想
一、面向过程 面向过程就是对解决问题的过程进行编程。比如我们在学习和生活中去实现某项功能或完成某项任务时,一般都会不自觉地按部就班地罗列出我们要做的事情。当我们按照罗列的步骤去解决问题时,实质上就是按照面向过程思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。 传统的面向过程的编程思想总结起来就是八个字--自顶而下,逐步细化!实现步骤如下: ...原创 2019-07-26 20:10:29 · 824 阅读 · 0 评论