- 博客(24)
- 收藏
- 关注
原创 创建型设计模式
比喻:整洁的房间,有一只好动的猫,如何保持房间的整洁。继承:无需修改原有类的情况下,通过继承,实现对原有功能的拓展。多态:静态多态,即函数重载;动态多态,继承中虚函数重写。设计模式是指在软件开发过程中,经过验证的,用于解决在。期望只修改少量的代码,就可以适应需求的变化。三大特征:封装、继承、多态。前提:具体的需求,既有稳定点,也有变化点。软件设计过程中,解决问题的固定套路。满足设计原则后,慢慢迭代出来的。封装:隐藏实现细节,实现模块化。3.设计模式解决了什么问题?2.设计模式是怎么来的?
2024-06-18 14:15:57 476
原创 如何仅用递归函数和栈操作逆序一个栈
一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但只能用递归函数来实现,不能用其他数据结构。
2024-05-30 20:09:22 221
原创 用一个栈实现另一个栈的排序
s1 pop,赋值给temp,temp小于等于s2栈顶元素的话,直接将temp push到s2;如果temp大于s2的栈顶元素,将s2中的元素先过渡到s1,直到temp小于或等于s2的栈顶元素(空),temp压入s2.1.s1代表原来的栈。
2024-05-30 11:35:39 92
原创 虚析构函数的作用
为什么不直接将析构函数都设为默认是虚析构函数的呢?因为在 C++ 看来,我们设计某个类,不一定是基类,这是符合期望的,基类与子类都正常析构了,那么什么时候析构会出问题呢?子类对象指针赋值给基类指针,在调用析构函数的时候,子类对象的析构函数得不到调用。如果该类是基类,我们应该手动将基类的析构函数设置为虚函数。,编译器会为类生成虚函数表,每个对象都需要持有 vptr。此时子类与基类都正常析构了。设置虚析构函数是有代价的。子类并没有正常析构!
2024-04-28 22:50:46 506 1
原创 怎么解决菱形继承
使用g++ -fdump-lang-class virtual-inheritance.cpp -o vi 这个命令来查看类的内存模型,其中, -fdump-lang-class是gcc 8.0以上使用的命令,gcc 8.0以下使用的参数为-fdump-class-hierarchy,可以看出在Class C中,两个Class A的地址并不一样!期望的运行结果应该是两个num的打印值都是2,即在两次对num的赋值中,第2次赋值覆盖第一次赋的值,从运行结果来看,显然并不是这样的。一、什么是菱形继承?
2024-04-28 17:54:17 374 1
原创 C++的智能指针
在这段代码中,buf是存在于栈上的,一个Buffer对象的智能指针,但make_shared创建出来的对象却是存在于堆上的,从运行结果可知,析构函数被调用,智能指针完成了对堆上数据的释放。因为智能指针本身是栈上的,出了定义域,指针自身会释放,同时与其他智能指针共享的指针计数count会减1,只有count为0时,才会去析构对应的对象。智能指针的引用计数是安全的,但是智能指针不能保证线程的数据安全,线程的数据安全还需要自己加锁。2.共享所有权指针的传播和释放,比如多线程使用同一个对象时析构的问题。
2024-04-28 03:02:27 699 2
原创 什么时候C++生成默认构造函数
B b;return 0;为了实现多态机制,需要为类维护一个虚函数表,类所有对象都需要保存一个指向该虚函数表的指针,对象需要初始化该虚函数表的指针,不得不提供默认构造函数来初始化虚函数表指针4.
2024-04-25 03:44:00 289 1
原创 WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
2.配置环境变量,使用命令sudo vi ~/.bashrc打开配置文件,在最后一行加上export PATH=$PATH:/usr/local/bin。Ubuntu安装pip3后,使用pip3 -V,总会发出warning。3.保存退出后,执行source ~/.bashrc,使环境变量生效。1.使用which pip3查看路径。4.检查pip3 -V,警告消失了。
2024-01-29 10:30:40 469
原创 const关键字的作用
3、在C++中,全局const变量同样不能修改,const修饰的局部变量加载于符号表中,无法修改,但修改不会报错,只是修改不会生效。2、在C语言中,局部const位于栈区,可以通过指针修改变量值;全局const位于静态全局区,无法修改,如 果修改会发生段错误。例如,在 func(const T &a){} 中,const的作用就是保证在这个函数中,a不能被修改。1、在C语言中,分为局部const、全局const。5、指针,有指针常量,常量指针。
2024-01-16 23:16:57 564 1
原创 C++服务器学习第二天
基础组件:中间件:单独运行起来,MySQL,Redis,TiDB,RocksDB,Nginx,MongoDB框架:Skynet,Tars,dpdk。
2023-07-24 21:36:10 49
原创 C++服务器学习第一天
(5)有K棵子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序。(6)关键字数量满足ceil(M/2)-1 <= n <= M-1。1.磁盘慢,永久存储,内存快,断电消失。(3)除了根结点以外,每个分支结点至少拥有M/2棵子树。(1)每个结点至多拥有M棵子树。(4)所有的叶结点都在同一层上。(2)根结点至少拥有两棵子树。
2023-07-22 21:02:23 48
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人