智能指针是用法和行为类似于指针的类对象。 智能指针的底层对原始指针做了一定的封装。 智能指针除了像指针一样可以存储变量的地址,还提供了其他功能,比如可以管理动态内存分配,对引用进行计数等。 当智能指针所指向的变量离开了作用域或被重置时,智能指针会自动释放该变量所占用的堆内存资源。 至于为什么要引入智能指...
在智能指针的模板类里重写operator->运算符 在智能指针的模板类的析构函数里,释放它指向的内存空间 管理指针的所有权和转移(下面的例子没有实现) #include<iostream>#include<memory>using namespacestd; template<typename T>classmy_auto_ptr{public: my_auto_ptr(T* p = nullptr):own(p!=nullptr),ptr(p)...
实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。 以下样例使用辅助类来实现: #include"iostream"usingnamespacestd;//定义一个普通类classbookClass{private:string name;intprice;public:intgetPrice(){returnprice;}};//辅助类classCounter{private:friendclasssmartPoint;Counter(bookClass*book):bk(bo...
1,unique_ptr的数组智能指针,没有*和->操作,但支持下标操作[] 2,shared_ptr的数组智能指针,有*和->操作,但不支持下标操作[],只能通过get()去访问数组的元素。 3,shared_ptr的数组智能指针,必须要自定义deleter 小例子 #include<iostream>#include<memory>#include<vector>using namespacestd;classtest{public:...
P248248.2.1-4.42智能指针(Av328870924,P248) 20:06 P249249.2.1-4.43重载等号运算符(Av328870924,P249) 15:47 P250250.2.1-4.44重载等于和不等于(Av328870924,P250) 07:34 P251251.2.1-4.45函数对象(Av328870924,P251) 09:11 P252252.2.1-4.46尽量不要重载逻辑与和逻辑或(Av328870924,P252) 04:50 P25325...
int arr[5] = {1, 2, 3, 4, 5};int *ptr = arr; // Pointer to the first elementfor (int i = 0; i < 5; i++) {printf("%d\\n", *(ptr + i)); // Accessing elements using pointer arithmetic} 从上面的例子中你可以看出,虽然指针可能停留在内存边界内,但它充满了神奇的数字,这...
这就有了两类智能指针。资源管理对象持有pin后的对象。各种行为、交互,通过 Auto 或 Rc 来进行。使用 Auto 或 Rc 时,遵循一个原则:当 new 一个 Auto 或 Rc 时,或者从 Pinned 目标转为 Rc 时,使用 using 语法糖。之外的大部分情况,可以随便浪了。 至于trait,可以用扩展方法+命名空间来模拟: public struct...
一,智能指针分3类:今天只唠唠shared_ptr shared_ptr unique_ptr weak_ptr 二,下表是shared_ptr和unique_ptr都支持的操作 上面操作的验证代码 #include <memory> #include <iostream> #include <vector> using namespace std; class Test{ public:
C++和C语言关系是啥呢?○ C++标准 ● 🌠C++应用 ● 🌠C++语言优点 ○ 第一个C++程序 ● 🌠命名空间 ● 🌠命名空间的使用 ○ 命名空间的定义 ● 🌠怎么使用命名空间中的内容呢?■ 1. 直接使用完全限定名 ■ 2. 使用`using`声明 ■ 3. 使用`using`指令 ■ 4. 嵌套命名空间 ■ 使用注意事项 ...
内存泄漏,主要指的是在堆(heap)上申请的动态内存泄漏,或者说是指针指向的内存块忘了被释放,导致该块内存不能再被申请重新使用。 之前在知乎上看了一句话,指针是C的精髓,也是初学者的一个坎。换句话说,内存管理是C的精髓,C/C++可以直接跟OS打交道,从性能角度出发,开发者可以根据自己的实际使用场景灵活进行内存...