C++
ZBQ__
这个作者很懒,什么都没留下…
展开
-
设计模式之单例模式
一.单例模式的定义单例模式,是一种常用的设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。二.单例模式的结构图三.具体实现方法(1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。(2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。(...原创 2019-08-12 09:46:34 · 120 阅读 · 0 评论 -
对象的生存周期_孤单--剪影_新浪博客
内置类型的临时量:常量自定义类型的临时量:变量隐式生成的临时量:常量类对象:临时量形参const的作用:1.防止实参被修改2.接收隐式生成的临时量类类型-》从临时量中拿出-》调构造函数初始化对象空间可以取地址优化:临时对象的生成目的是为了生成新的对象,以生成临时对象的方式生成新的对象引用可以提升临时对象的生存周期,提升到和引用的对象一样具体代码及分析:...原创 2018-11-23 19:44:54 · 134 阅读 · 0 评论 -
内联函数_孤单--剪影_新浪博客
内联函数:inline修饰的函数叫内联函数内联函数在调用点之间展开,不生成符号内联函数没有开栈清栈内联函数执行的开销小于函数开栈的开销内联函数最好写在头文件中内联函数在debug版本下不生效,只在release版本下生效其实内联函数只是给编译器一个建议,所以只在release版本下生效。问题一:递归函数系统为什么不会处理成内联函数?因为在编译期间无法确定递归的深度...原创 2018-11-25 14:11:10 · 155 阅读 · 0 评论 -
调用约定与类与对象初_孤单--剪影_新浪博客
_cdecl(c标准调用约定)调用方开辟形参,调用方进行清理_stdcall(Windows的标准调用约定)调用方开辟形参内存,被调用方清理_fastcall(快速调用约定)两种情况:1.形参字节小于等于四前两个形参值不开辟内存,寄存器带入被调用方第三个形参开始和_stdcall调用约定相同2.形参字节大于四调用方开辟内存,被调用方清理内存_thiscall...原创 2018-11-25 15:02:30 · 125 阅读 · 0 评论 -
写时拷贝_孤单--剪影_新浪博客
写时拷贝:通俗一点就是说修改时做拷贝。(修改前做浅拷贝,修改后做深拷贝)给出一个引用计数,有多少个对象来指向,将最后一个delete掉不能放在对象或类中,只能放在内存中,开辟时多开辟4个字节当我们在使用拷贝构造或者赋值时,可以直接给引用计数加1,并且让这个新创建的对象指向这个已存在的对象的字符串,当指字符串的指针减少时(每减少1个),引用计数就减1,引用计数为0时,这段空间将被回...原创 2018-11-28 19:23:31 · 119 阅读 · 0 评论 -
继承与派生_孤单--剪影_新浪博客
继承和派生:主要有基类(又称父类)和派生类(又称子类)主要结构://类标识 类名 : 继承方式 基类类名派生类继承了父类的什么?除了基类的构造函数和析构函数以外的所有成员(成员方法,成员变量,作用域)Public:任意位置都可以访问Protected:本类类中,子类中可以访问Private:本类类中访问**基类中不同的访问限定符下的成员以不同的继承方式在派生...原创 2018-12-04 11:39:41 · 121 阅读 · 0 评论 -
指针与引用的区别_孤单--剪影_新浪博客
<1>非空区别。在任何情况下都不能使用指向空值的引用,引用定义时必须初始化。如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时应将该变量设置为指针。<2>合法性区别,在使用引用之前不需要进行判空操作,而指针必须测试其不为空。<3>可修改区别,指针可以重新被赋值以指向另一个不同的对象,引用总是指向在初始化时被指定的对象,以...原创 2019-01-12 20:45:25 · 120 阅读 · 0 评论 -
函数堆栈调用
以上两张图做了四件事情:(1)将调用方的栈底指针入栈.(2)让原本指向调用方栈底的ebp指向当前函数的栈底.(3)给当前函数开辟栈帧.(4)对开辟的栈帧进行初始化.总结:函数的运行都是在栈上开辟内存的.栈是通过esp(栈顶指针),ebp(栈底指针)两个指针来标识的对于栈上的访问都是通过栈底指针的偏移来访问的在call一个函数时,有两件事情:先将调用函数的下一行指令的地址压入栈...原创 2019-07-19 16:47:55 · 94 阅读 · 0 评论 -
c++基本知识
函数重载:C语言的符号生成规则:只和函数名有关C++的符号生成规则:函数原型(函数头部),1.返回值返回值不能作为重载的依据,可能会产生二义性2.函数名C语言的符号生成规则只和函数名有关,如果把函数名作为返回值的话,就和C语言冲突了.3.函数形参(1)参数个数(2)参数类型(3)参数顺序函数形参作为函数重载的依据.函数重载的三要素:1.同名2.不同参3.同作用域malloc和ne...原创 2019-07-23 11:12:05 · 125 阅读 · 1 评论 -
C++中oop的思想
oop通常来说就是面向对象的编程思想.面向对象三大特性:封装,继承,多态现实世界是由一个个对象组成的,因此面向对象的思维方式更加接近现实世界,面向对象编程的组织方式也更加贴近现实世界。面向对象以对象为中心,将对象的内部组织与外部环境区分开来,将表征对象的内部属性数据与外部隔离开来,其行为与属性构成一个整体,而系统功能则表现为一系列对象之间的相互作用的序列,能更加形象的模拟或表达现实世界。在编程...原创 2019-07-23 12:00:48 · 332 阅读 · 1 评论 -
C++之智能指针
C++98引入了auto_ptrauto_ptr:**特点:**管理权限唯一,控制权限唯一<所有权唯一>只有一个指针对象进行管理,剩下的都会失效.数据无法共享不能在容器中保存auto_ptr,也不能从函数中返回auto_ptr.上图所示是错误的,因为所有权是唯一的.所以在C++11摒弃了auot_ptr:要避免因为潜在的内存问题导致程序崩溃.auto_ptr的简单实现:...原创 2019-08-04 16:28:42 · 149 阅读 · 1 评论 -
类的默认函数
1.构造函数:是进行初始化的函数,主要特点:名称和类名相同,没有返回值默认构造函数:不带任何参数的构造函数构造函数主要步骤:1、开辟空间2、给开辟的内存进行初始化(主要是为了生成对象)构造函数可以重载2、析构函数:是进行清理资源的函数结构:~类名();析构函数的主要步骤:1.清理资源2.清理空间(主要是为了对象的销毁)先构造的后析构,析构函数不可以重载析构函...原创 2018-11-23 18:56:02 · 167 阅读 · 0 评论