C++
Monster7559
这个作者很懒,什么都没留下…
展开
-
C++类基础
关于空类 (1)C++中定义一个空的类型时类,里面没有任何成员变量和成员函数,对该类型求sizeof时,得到的结果应该是1,而不是0,因为空类型中不包含任何信息,本来应该是0,但是当我们声明该类型的实例的时候,必须在内存中占有一定的空间,否则无法使用这些类型,至于占用多少内存由编译器决定,在Visual Studio中每个空类型的实例占用一个字节的空间。 (2)当在空类中添加一个构造函数和析构函...原创 2018-12-03 19:50:00 · 228 阅读 · 1 评论 -
调用约定
一:调用约定的影响: (1)影响符号的生成规则 (2)影响形参的入栈顺序 我们常用的四种都是从右向左入栈 (3)影响形参的开辟和清理方式 二:四种调用约定 1._cdecl: 开辟:调用方 清理:调用方 2._stdcall: 开辟:调用方 清理:调用方 3._fastcall: 形参字节小于等于四字节:前两个不开辟内存,寄存器带入被调用方,第三个参数开始与_stdca...原创 2019-04-22 14:24:28 · 125 阅读 · 0 评论 -
new、malloc与delete、free
Malloc与new: 1.图解 2.详解new和malloc的区别 (1)申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间 malloc函数从堆上动态分配内存。 自由存储区是C++基于new操作符的一个抽象概念凡是通过new操作符进行内存申请,该内存即为自由存储区。堆、栈、数据段中用new开辟的都可以称为自由存储区 堆是操作...原创 2019-04-22 14:23:26 · 213 阅读 · 0 评论 -
C++常见关键字
一:const C和C++中的区别 1.在C语言中。Const int a=10; 不可以做左值但是 int* p=&a;是正确的 a是常变量 2.在C++中const修饰的是常量,其值不允许改变 int* p=&a;是错误的,C++中编译期将使用该常量的地方替换成了常量的值,普通指针不可指向 3.int arr[a] 在c中 Const int a=10; int...原创 2019-04-22 14:22:08 · 5792 阅读 · 0 评论 -
指针与引用
一:指针与引用定义和性质上的差别 1.指针:是一个变量存储一个地址,指向内存的一个存储单元 引用:是原变量的一个别名,本质上仍然是同一个 2.可以有const的指针,没有const的引用 引用可以指向常量,也可以指向变量。例如int &a=b,使引用a指向变量b。而为了让引用指向常量,必须使用常量引用,如const int &a=1; 它代表的是引用a指向一个const...原创 2019-03-05 20:10:25 · 229 阅读 · 0 评论 -
静多态与动多态
一:如何判断静多态和动多态 1.动多态底层call的是寄存器,而静多态底层call的是函数入口地址 二:成为虚函数的条件 1.可以取地址,即inline内联函数不可以 2.必须依赖对象调用,因为虚函数表是通过对象内存布局的vfptr指向的,即static,构造函数不可以成为虚函数 3.析构就可以成为虚函数 三:动多态 1.对象调用虚函数发生的并不是动多态,只有指针调用时才会发生动多态...原创 2019-03-11 20:58:58 · 513 阅读 · 0 评论 -
继承:代码复用
类与类的关系:有三种 (1)组合:一个对象是另外一个对象的一部分 是一种 has_a的关系 (2)继承:一个对象是另外一个对象的一种 是一种is_a的关系 私有继承是has_a的关系 (3)代理:容器适配器的实现 一:同名函数的关系 1.重载:同作用域同名,参数列表不同 2.隐藏:被隐藏的函数任然存在只是看不见 3.覆盖:不存在 二:基类和派生类的构造顺序:先调用基...原创 2019-03-05 19:32:28 · 496 阅读 · 0 评论 -
引用和类的初始化列表
一:引用 1.引用相当于变量的别名 2.引用的底层是一个指针,在使用的地方替换成了指针的解引用(在编译期间,指令生成的时候) 3.引用必须初始化 4.不许泄露常量的引用给非常量的引用 5.引用一个不可寻址的常量时,会产生一个临时量 6.标准类型产生的临时量是常量自定义类型产生的非常量 7.引用单独使用不参与类型,const单独使用不参与类型,const&结合可参与类型。可以形...原创 2019-03-05 19:32:05 · 526 阅读 · 0 评论 -
const
1.在C语言中: const int a=10; 此时a不可作为左值 但是int*p=&a;是正确的,在C语言中const修饰的称为常变量 2.在C++中 上述int*p=&a;表达式即为错误的,因为在C++中const修饰的称为常量,常量的值不允许改变 在C++中编译期间会将使用该常量值的地方替换成了常量的值,会使普通指针不可指向 3.int arr[]中括号中的数...原创 2019-03-05 19:31:55 · 166 阅读 · 0 评论 -
对象的生存周期
一般对象的生存周期在函数内,生成时生成,调用析构函数时结束或者return之后。 一般临时对象的结束是在该对象生成的语句分号前调用析构函数。 但是引用会提升临时对象的生存周期,会将生存周期提升的与引用对象的生存周期相同。 指针并不能提升对象的生存周期,不能指向临时对象,因为当该条语句分号结束之后会指向别处出现非法访问。 全局对象的生成在可执行文件加载时,在main函数之后结束 局部静态生...原创 2018-12-03 20:55:28 · 590 阅读 · 0 评论 -
单例模式
一: 单例模式:只能生成一个对象的类 首先需要将生成对象的接口析构函数和拷贝构造函数的接口屏蔽起来, 其次在类中提供一个接口来生成唯一的对象 为了防止临时对象的生成需要将该接口的返回值设置为类对象的引用或指针 而且这个接口应该是静态的,因为如果不是该接口需要依赖函数对象调用而函数对象又要依赖该接口生成 最后 静态接口只能访问静态成员变量,所以还需要定义一个静态对象的指针,并在类外初始化...原创 2019-04-22 15:13:36 · 152 阅读 · 0 评论