10 2019 档案
摘要:1)C++允许内置数据类型之间进行隐式转换,比如char转int,int转double,对于内置数据类型的转换有详细的规则,但不管怎么样,这些都是语言提供的,相对安全,而且我们无法更改对于自定义类的类型,其隐式类型可以通过带单一自变量的构造函数和隐式类型转换操作符来实现2)单一自变量构造函数:指能够以单一自变量成功调用的构造函数,该构造函数可能只有一个参数,也可能有多个参数,并且除了第一个参数外其...
阅读全文
摘要:1)default constructor:在没有任何外来信息的情况下将对象初始化2)但是有些对象如果没有外来信息,就没有办法完成初始化动作,那么这些对象,就没有必要提供default constructor3)如果一个类缺乏default constructor,那么使用这个类的时候会存在一定的限制限制1:产生数组的时候,没有任何一个方法可以为数组中的对象指定constructor自变量。Equ...
阅读全文
摘要:1.在数组与多态混用的情况下,数组元素的访问会出现不可预期的结果(因为数组元素的访问会使用到下标运算)将一个子类对象数组传递给一个父类对象数组声明的函数,编译器会允许这个行为,但是由于子类对象和父类对象的内存结构不同,会导致运行结果异常,因为在这种情况下,编译器仍然假设每一个元素的大小是父类对象元素的大小,但此时实际上每一个元素的大小是子类对象元素的大小#includeusing namespac...
阅读全文
摘要:VS中的程序有两种编译模式:Debug模式和Release模式。Debug通常称为调试版本,通过一系列编译选项的配合,编译结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试,所以不保存调试信息,同时它往往进行了各种优化,以期达到代码最小和速度最优,为用户的使用提供便利。Debug程序通常...
阅读全文
摘要:C的转型方式存在以下两个缺点:1)几乎允许你将任何类型转化为任何类型,不能精确的指明转型意图,这样很不安全如将一个pointer-to-base-class-object转型为一个pointer-to-derived-class-object(改变一个对象的类型)和将一个pointer-to-const-object转型为一个pointer-to-non-const-object(改变对象的常量性...
阅读全文
摘要:1)操作符的差别 指针使用“*”和“->”操作符,而引用使用“.”操作符2)初始化的差别 有空指针,但是没有空引用,和const对象一样,引用一旦定义就必须和对象绑定(当然char* pc=0;char& rc=*pc;也合法但无意义)由此造成的影响: 2.1)对于指针的向下转型,如果失败则返回空指针,但由于没有空引用的说法,所以对于引用的向下转型如果失败则会抛异常 2.2)由于引用不能为...
阅读全文
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。 示例 2: 输入: [3
阅读全文
摘要:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明
阅读全文
摘要:一.vector1.概述动态数组,在内存中具有连续的储存空间,在堆上分配内存,支持快速随机访问,在中间插入和删除慢,但在末尾插入和删除快2.特点1)拥有一段连续的内存空间,并且起始地址不变,因此能非常好的支持随机存取,但由于其内存空间是连续的,所以在中间插入和删除会造成内存块的拷贝,另外,当该数组的内存空间不够时,需要重新申请一块足够大的内存并进行内存拷贝,这些都大大的影响了vector的效率2)...
阅读全文
摘要:一.静态库和动态库的定义及区别程序编译的四个过程:1.预处理 展开头文件/宏替换/去掉注释/条件编译(.i后缀)2.编译 检查语法,生成汇编(.s后缀)3.汇编 汇编代码转换成机器代码(.o后缀)4.链接 链接到一起生成可执行程序(.out后缀)静态库:静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行动态库:动态库是在程序执行时...
阅读全文