51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

C++

C++ 智能指针 weak ptr

C++ 智能指针 weak ptr

厉飞雨 阅读(13) 评论(0) 赞(0)

`std::weak_ptr` 是 C++ 标准库中的一个智能指针类,用于解决 `std::shared_ptr` 可能引发的循环引用问题。循环引用可能导致内存泄漏,因为引用计数无法降为零,从而无法释放对象。 `std::weak_ptr`是一种弱引用,它允许你观测由 `std::shared_ptr` 管理的对象,但不会增加对象的引用计数。换句话说,`std::weak_p...

C++ 智能指针 shared ptr

C++ 智能指针 shared ptr

厉飞雨 阅读(16) 评论(0) 赞(1)

C++ 的 `shared_ptr` 是 C++11 标准引入的智能指针之一,用于管理动态分配的对象的所有权。它允许多个 `shared_ptr` 实例共享对同一对象的所有权,而不会出现内存泄漏或者悬空指针的情况。`shared_ptr` 使用引用计数技术来跟踪有多少个 `shared_ptr` 实例指向同一个对象,并在最后一个实例销毁时自动释放对象。 接下来,主要从以下几个...

C++ 智能指针 unique ptr

C++ 智能指针 unique ptr

厉飞雨 阅读(13) 评论(0) 赞(2)

`unique_ptr` 提供了一种独占所有权的智能指针,允许动态分配的对象在其生命周期结束时自动释放内存。这种特性在 C++11 中是非常有用的,因为它有助于避免内存泄漏和悬挂指针等常见问题,同时也提高了代码的安全性和可靠性。 我们重点从以下几个方面来学习 unique_ptr : 1. unique_ptr 使用 2. unique_ptr 特性 3. unique_p...

C++ 智能指针 auto ptr

C++ 智能指针 auto ptr

厉飞雨 阅读(11) 评论(0) 赞(1)

`auto_ptr` 是 C++98 中引入的智能指针,用于自动管理动态分配的对象的生命周期。然而,它在 C++11 中已被标记为已废弃,并且在 C++17 中已被移除,因为它存在一些严重的缺陷和安全问题。 1. auto_ptr 用法 {#title-0} ========================= 我们先了解下 auto_ptr 智能指针创建、以及相关成员方...

C++ Type Traits

C++ Type Traits

厉飞雨 阅读(11) 评论(0) 赞(1)

`Type Traits` 是 C++11 中的一种模板元编程技术,它提供了一系列的模板类和函数,用于在**编译时**查询和操作类型信息。这些类型特征可以用于泛型编程中,帮助我们编写更加灵活、通用和安全的代码。 例如:判断一个类型是否为指针类型、是否为整数类型、是否可以进行拷贝构造等等。这使得我们可以根据类型的属性来做出不同的编译时决策,从而避免在运行时出现错误或者不必要的性...

C++ 运行时类型识别(RTTI)

C++ 运行时类型识别(RTTI)

厉飞雨 阅读(10) 评论(0) 赞(1)

C++ 是一种静态类型语言,数据类型在编译时确定。但在有些场景下,编译时无法确定数据类型,需要在运行时才能确定。RTTI(Run Time Type Identification,运行时类型识 别)就是一种能够在运行时动态确定数据类型的机制。 1. RTTI 应用场景 {#title-0} ----------------------- C++ 中使用 typeid 和...

C++ 位运算技巧

C++ 位运算技巧

厉飞雨 阅读(9) 评论(0) 赞(2)

可以使用C对变量中的个别位进行操作。您可能对人们想这样做的原因感到奇怪。这种能力有时确实是必须的,或者至少是有用的。C提供位的逻辑运算符和移位运算符。 1. 位运算符 {#title-0} ================== 1. 位运算符 1. 取反 \~,对于每个位按位取反。 2. 位与 \&,对于每个位,只有两个操作数的对应位都是 1 时结果才为...

C++ std::function 泛化函数对象

C++ std::function 泛化函数对象

厉飞雨 阅读(10) 评论(0) 赞(3)

`std::function` 是 C++11 标准库中的一个类模板,用于封装可调用对象(函数、函数指针、成员函数指针、Lambda 表达式等),并提供一种统一的方式来管理它们。 通过 `std::function`,你可以将可调用对象存储在一个对象中,并稍后调用它们,而无需在编译时知道确切的类型。这使得 `std::function` 特别适合于实现回调函数、事件处理等场景...

C++ 中 using 关键字的用法

C++ 中 using 关键字的用法

厉飞雨 阅读(12) 评论(0) 赞(3)

C++ 中的 using 用法有很多种,我们下面剖析下常见几种场景: 1. using 关键字给类型增加别名 2. using 用于继承中的同名函数 3. using 关键字用于构造函数 1. using 关键字给类型增加别名 {#title-0} ============================== ``` typedef int my_int1; using ...

C++ 变量的初始化方法

C++ 变量的初始化方法

厉飞雨 阅读(9) 评论(0) 赞(3)

``` // 1. C++11 就地初始化 // 所谓就地初始化,就是在变量定义时直接给其初始化。 // 以前我们可以通过:构造函数、成员初始化列表 // C++98的时候,静态的const变量使用的就是就地初始化 class Demo1 { public: const static int s_a = 100; }; // C++11 之后,对于非静态的 const 变量也...