随笔分类 - C/C++
摘要:返回对象与应用区别: 拷贝构造器发生的时机: 1.构造新对象 A a, A b = a; 2.传参或返回对象 对于普通变量来说,传引用效果不是很明显,对于类对象而言,传对象效果很高。 传引用等价于扩大了原对象的作用域。 c与c++关于字符串的处理对比 c基于字符数组,利用一些方法strcpy,str
阅读全文
摘要:拷贝构造器 由己存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成。拷贝构造器的格式是固定的。 规则: 1 系统提供默认的拷贝构造器。一经实现,不复存在。 2 系统提供的时等位拷贝,也就是所谓的浅浅的拷贝。 3 要实现深拷贝,必须要自定义。 4 浅拷贝,会导致内存重析构
阅读全文
摘要:构造器(constructor) 1.与类名相同,无返回,被系统生成对象时自动调用,用于初始化。 2.可以有参数,构造器的重载,有默认参数。重载和默认参数不能同时出现,但是一定要包含标配(无参数的构造器),为了对象的午无参创建。 3.如果未提供任何构造器,系统默认提供一个无参的构造器。如果提供,则不
阅读全文
摘要:封装 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。这是 c 语言中封装的概念。但是,新类型并不包含,对数据类的操作。所的有操作都是通过函数的方式,去其进行封装。 对一组数据变量组进行结合形成结构体 初步的封装。 C语言的封装风格,数据放到一起找
阅读全文
摘要:恢复内容开始 内存管理 new/delete C语言中提供了 malloc 和 free 两个系统函数, include "stdlib.h"库函数,完成对堆内存的申请和释放。而 c++则提供了两关键字 new 和 delete ,new delete关键字。 生成单变量空间和数组空间 cpp //
阅读全文
摘要:C++重载详解 重载就是同名而非同义,具体意义根据上下文的语境而言。 重载规则: 1,函数名相同。 2,参数个数不同,参数的类型不同,参数顺序不同,均可构成重载。 3,返回值类型不同则不可以构成重载。 函数重载(静多态) 匹配原则: 1,严格匹配,找到则调用。 2,通过隐式转换寻求一个匹配,找到则调
阅读全文
摘要:C++类型增强 类型检查更严格 把一个const类型的指针赋给非const类型的指针。c语言中可以通的过,但是在c++中则编不过去 布尔类型(bool) c 语言的逻辑真假用 0 和非 0 来表示。而 c++中有了具体的类型。 真正的枚举(enum) c 语言中枚举本质就是整型,枚举变量可以用任意整
阅读全文
摘要:预处理 宏 常量的存在形式之一。 缺点: 带参宏(宏函数) 将短小精悍的函数进行宏化,这样可以嵌入到代码中,减少调用的开销。但是代价就是编译出的文件可能变化大。 宏函数常常一行表达不完,如多行,为了形式上的方便,多采用续行付接续。 演技高超的替身演员,一定要用替换后的代码看待,不要把宏当作真真的函数
阅读全文
摘要:位操作(Bit Operation) 位操作与逻辑操作 位操作不同于逻辑操作,逻辑操作是一种整体的操作,而位操作是针对内部数据位补码的操作。逻辑操作的世界里只有真假(零与非零),而位操作的世界里按位论真假(1和0)。运算也不相同。 数据的二进制形式表示 8位二进制数据的补码 eg:打印一个32位数据
阅读全文
摘要:二进制读写才是本质 二进制的读写对文件标记不敏感。 eg: 对图片进行加密与解密: 用命令的形式去执行: //xx.exe c src dest 加密 //xx.exe d src dest 解密 他的参数就是argv[0 3] 使用Qt 读写结构体的优势 结构体中的数据类型不统一,此时最适合用二进
阅读全文
摘要:文件 读写磁盘文件 文件流 文件看作是一个字符的序列,即文件是由一个一个字符组成的字符流,因此C语言也将称之为文件流。当读写一个文件时,可以不必关心文件的格式或者结构。 文件类型 划分依据是逻辑关系 文本文件:以ASCII个是存放,一个字节存放一个字符。便于字符的逐个处理,但占用空间较多,需要花费时
阅读全文
摘要:链表 List 链表实现了内存零碎片的有效组织。 静态链表 链表中有两个成员,数据域和指针域 数据域:我们存储的数据。 指针域:指针指向下一个具体的节点,代表了下一个节点的类型是链表类型。 所谓的指针的指向谁,就是保存了谁的地址 静态链表的封装: 动态链表 他与静态链表的区别是,只有头节点放在栈空间
阅读全文
摘要:共用(Union)与枚举(Enum) 共同体 c语言中,不同的成员使用共同的存储区域的数据结构类型称为共用体。(共用,联合体),共用体在定义,说明,适用形式上与结构体相似。两者本质上的不同在于使用内存的方式上。 定义: 大小:对于结构体不考虑内存对齐,其大小是各成员之和。对于共同体,成员中最大的元素
阅读全文
摘要:栈的实现 特点FILO(先进后出) 假设栈的空间为8 top == 0 不能出栈,已到栈底 top == 8 不能入栈,已到栈顶 top始终指向一个待插入的位置 push操作,1.写入数据,2.top++ 3.前提条件是栈非满 pop操作,1.top ,2.弹出数据 3.前提条件是栈非空 c inc
阅读全文
摘要:结构体(struct) 从某种意义上说,会不会使用struct,如何使用struct是区别一个开发人员是否具备丰富开发经验的试金石。 处理由不同类型成员构成的构造类型,要采用结构体的方式。 定义:关键字struct. 无名结构体,一般用于定义类型相同时,定义变量;并且不会带来多余的命名。 有名结构体
阅读全文
摘要:内存管理 进程空间 源程序:源代码 程序(可执行文件):有源程序编译后的文件 进程:时间概念,可执行文件被拉起到结束的这段过程。进程可以被拉起多个。 进程空间:可执行文件被拉起,在内存中的分布情况。 进程空间的分布: 32位机最大寻址3G, 重点栈,堆 栈:auto修饰的变量,谁调谁用,用完即消。不
阅读全文
摘要:指针数组 指针数组的本质是数组,数组指针的本质是指针 一个数组中的各个元素都是字符指针,即为字符指针数组,或者指针数组。 c int arr[] = {1,2,23,45,6};//整形数组 char cArr[] = {'a','b','v','d'};//字符数组 char a,b,c,d; c
阅读全文
摘要:字符串 c语言没有字符类型,字符串是有双引号硬起来的一串字符。 字符串常量 系统自动默认的在字符串末尾添加一个\0; 大小实际大小加\0所占的一个字符。 存储位置:data域 c语言,将字符串常量处理一个指向data段这段字符串的首地址。 对比数组,三要素(起始地址,步长,范围)char :代表了整
阅读全文
摘要:变量的作用域 凡是在{}以内的变量为局部变量,也包括形式参数。 凡是{}外的变量为全局变量 作用域: {}以内的作用域为局部作用域,主要包含的事变量 {}以外的作用域为全局作用域,包含的是变量和函数 同一作用域内,不可以用重命名的变量 局部变量的作用域,起始于定义处,直到所在的大括号处结束。 全局变
阅读全文
摘要:函数 函数三要素:函数名,参数,返回值 重点研究函数的输入输出 随机数函数 自定义函数 最大值函数 定义和申明的关系 定义在前,调用在后 定义在后,调用在前,此时需要向前申明。函数的特点是先声明,在调用。 形参与实参 形参:在函数定义或者是声明的时候的参数,声明中的参数可以省略,但参数类型不能省略。
阅读全文