
C++
catdeo
怕什么真理无穷,进一寸有一寸的欢喜
展开
-
【C++】二叉搜索树
二叉搜索树的定义对于树中的每个节点Node,它的左子树中所有关键字值小于Node的关键字值,而它的右子树中所有关键字值大于Node的关键字值。根据这个性质,对一个二叉树进行中序遍历,如果是单调递增的,则可以说明这个树是二叉搜索树。实现一个二叉搜索树#include <iostream>using namespace std;template <class T>...原创 2020-05-02 15:23:12 · 177 阅读 · 0 评论 -
MD5算法的实现原理
【项目】磁盘文件管理工具项目预期目标本项目旨在实现一个文件管理项目,主要功能为删除磁盘中的重复文件(拟采用计算机文件指纹的方法来判断两个文件是否相同,所谓的文件指纹就是数字签名)常用的数字签名算法数字签名的作用主要有:能够确保信息由指定的发送方发送,因为每个人的签名不同数字签名能够保证文件的完整性,因为数字签名代表了所发文件的特征,文件若发生改变,数字摘要的值也会随之发生改变。常...原创 2020-02-11 17:05:54 · 1620 阅读 · 0 评论 -
【C++】static关键字用法
static关键字1.全局静态变量在全局变量前加上关键字static,全局变量就被定义成为全局静态变量,存放在静态存储区,在整个程序的运行期间一直存在初始化:未初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显示初始化)作用域:作用域发生改变,仅在当前文件中有效。2.局部静态变量在局部变量之前加上static关键字,局部变量就成为局部静态变量,存放在静态存储区。...原创 2019-10-12 22:24:30 · 275 阅读 · 0 评论 -
【C++】基础知识整理
1.C++关键字在c++98中,有63个关键字。(不能遗漏标准名称,任何不带标准名称来说关键字个数都是耍流氓)2.命名空间1.定义命名空间,需要用到namespace关键字,后面跟命名空间的名字,然后接{},{}中即为命名空间的成员。普通命名空间命名空间嵌套同一个工程可以存在多个相同名称的命名空间,编译器最后会合并成同一个空间。注意 :一个命名空间就定义了一个新的作用域,...原创 2019-07-22 15:18:22 · 259 阅读 · 2 评论 -
【c++】类与对象
C++类与对象空类:如果一个类中不存在任何成员,我们就称之为空类、class Date{};```但是空类不代表类中啥都没有,在一个类中,如果没有设置成员,会自动设置6个默认的成员函数```c1.初始化和清理 构造函数:完成初始化工作 析构函数:完成清理工作2.拷贝复制 拷贝构造是使用同类对象初始化创建对象 赋值运算符重载:把一个对象赋值给另一个对象3.取地址重载 主要...原创 2019-08-02 11:30:57 · 205 阅读 · 0 评论 -
【c++】菱形继承问题
菱形继承我们可以得到Assistant的类模型如下图所示:可见Assistant对象中由两份Person成员吗,造成了数据冗余与二异性问题,利用虚拟继承来解决菱形继承的二义性和数据冗余问题。虚拟继承class A{public: int _a;};class B : virtual public A{public: int _b;};class C : virtu...原创 2019-08-23 16:43:49 · 170 阅读 · 0 评论 -
【C++】浅析智能指针
C++中为什么要引入智能指针malloc 或者new出来的空间没有进行释放,存在内存泄漏等问题异常安全问题,如果在malloc和free之间存在异常抛出,程序转移到异常处执行还是会存在内存泄漏问题智能指针的使用及原理1.RAIIRAII只一种利用对象生命周期来控制程序资源(如内存,操作句柄,网络连接,互斥量等),在对象构造时获取资源,接着控制对资源的访问在对象的生命周期内始终有效,最...原创 2019-09-19 11:24:19 · 139 阅读 · 0 评论 -
【C++】模拟实现Linux中的mkdir -p命令
问题背景工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。问题描述输入包含多组数据。每组数据第一...原创 2019-09-27 10:04:40 · 2471 阅读 · 0 评论