摘要:
# 继承关系中的构造函数,析构函数与虚函数一文全析 ## 1. 无虚析构函数的public继承 ```cpp #include #include using namespace std; class P{ public: P(){cout construct P! > construct C! > 阅读全文
摘要:
# 类外static函数定义要不要加static关键字? 先说答案:**不需要**。 ## 错误代码: ```cpp #include #include using namespace std; class Base { public: enum class Type { Derived1, Der 阅读全文
摘要:
前言: 有关于算法的一切的大合集 基本数据结构及排序方法手撸 完全二叉树/满二叉树 红黑树 节点分为红色或者黑色; 根节点必为黑色; 叶子节点都为黑色,且为null; 连接红色节点的两个子节点都为黑色(红黑树不会出现相邻的红色节点); 从任意节点出发,到其每个叶子节点的路径中包含相同数量的黑色节点; 阅读全文
摘要:
# 结构体Struct、联合体Union与类Class ## 1. Struct/Class **struct能包含成员函数吗? 能!** **struct能继承吗? 能!!** **struct能实现多态吗? 能!!!** ### **1.1 最本质的区别是默认的访问控制;** 结构体的继承是pu 阅读全文
摘要:
# 新特性集锦: ## std::span(C++20) 使用std::span可以帮助我们更好地管理数组,从而避免越界问题。 1. 使用std::span的构造函数来创建一个指向char数组的span对象,并指定其长度。这样可以确保我们只访问数组中有效的元素,而不会越界。 ```cpp char 阅读全文
摘要:
# 函数指针、std::function、std::bind ## 函数指针: - C++语法中可以直接将函数名作为指针, ```cpp void fun(int a, int b); ``` 在这个函数声明中,函数指针即为`fun`,传入要被调用的地方时只需要传入`fun`就可以。 但是这个函数指 阅读全文
摘要:
# 左值,右值,引用,指针,常量,auto如何组合? - 左值引用:`int &a = b;` - 左值引用是通过使用`&`符号来声明的,例如`int &a`。 - 左值引用用于绑定到左值(可标识的、持久的、具名的),a绑定到b。 - 左值引用允许对其绑定的对象进行修改。 - 使用左值引用可以实现函 阅读全文
摘要:
# 迪杰斯特拉算法(单源最短路径) 算法基本流程:node 0 as start. 注意算法流程默认图是联通的,若不联通,需要添加循环跳出处理。 ![image-20230805163622438](https://img2023.cnblogs.com/blog/2505287/202308/25 阅读全文
摘要:
C++11 同步与互斥 0. C++11的线程 #include <thread> 面向对象的接口 RAII(资源获取即初始化)机制,当线程对象被销毁时,会自动执行析构函数,如果线程仍然在运行,会自动调用std::terminate()来终止程序; 使用std::mutex和std::conditi 阅读全文
摘要:
# 工厂模式、抽象工厂模式 ## 工厂模式: - what:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,对象创建过程延迟到子类进行。 - 用相同的行为去根据不同的条件创建不同的实例。适合复杂并且未来有可能扩展的对象。比如一个饭店有好几种披萨,但是披萨的种类还在不断的研发中,就需要扩充 阅读全文