而 C++ 虽然从来没有公开得支持过垃圾回收机制,但 C++98/03 标准中,支持使用 auto_ptr 智能指针来实现堆内存的自动回收;C++11 新标准在废弃 auto_ptr 的同时,增添了 unique_ptr、shared_ptr 以及 weak_ptr 这 3 个智能指针来实现堆内存的自动回收。 所谓智能指针,可以从字面上理解为“智能”的指针。具体来...
智能指针是用法和行为类似于指针的类对象。 智能指针的底层对原始指针做了一定的封装。 智能指针除了像指针一样可以存储变量的地址,还提供了其他功能,比如可以管理动态内存分配,对引用进行计数等。 当智能指针所指向的变量离开了作用域或被重置时,智能指针会自动释放该变量所占用的堆内存资源。 至于为什么要引入智能指...
27、四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr 28、shared_ptr中的循环引用...
auto_ptr是一个智能指针,用于管理通过新表达式获得的对象,并在销毁auto_ptr本身时删除该对象。 当使用auto_ptr类描述对象时,它存储指向单个已分配对象的指针,以确保当其超出范围时,它指向的对象必须自动销毁。它基于专有所有权模型,即相同类型的两个指针不能同时指向同一资源。如以下程序所示,指针的复制或分配会更改...
this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用 this 指针。 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数...
智能指针 左值、右值引用和move语义 类型转换方式 常用的设计模式 线程安全的单例模式 内存溢出和内存泄漏 C++11新特性 静态链接库和动态链接库 4 STL标准模板库 (务必能进行源码剖析) 迭代器、空间配置器理解 常用容器特点、用法以及底层实现vector、list、deque、set、map、unorderedmap 5 推荐书籍 《C++Primer》可...
std::shared_ptr 支持多个智能指针实例共享同一个底层对象的所有权。为了使得所有这些智能指针实例都能看到并更新同一个引用计数,这个计数必须存在于一个所有实例都可访问的单一、共享的位置。如果引用计数是一个栈上的成员变量,每个 shared_ptr 的副本将会拥有自己的计数副本,这样就无法达到多个智能指针之间的正确同步...
了解std::vector的方方面面和底层实现 vector是动态扩容的,2的次方往上翻,为了确保数据保存在连续空间,每次扩充,会将原member悉数拷贝到新的内存块; 不要保存vector内对象的指针,扩容会导致其失效 ;可以通过保存其下标index替代。 运行过程中需要动态增删的vector,不宜存放大的对象本身 ,因为扩容会导致所有成员拷贝构...
此外,C++在发展过程中也进行了一系列的修订和演变。这些修订和演变使得C++在保持兼容性的同时,不断引入新的特性和优化。例如,C++11标准引入了自动类型推导、智能指针、lambda表达式等新特性,使得C++的编程更加简洁、高效。C++与C语言的应用场景 由于C语言和C++在特性上的差异,它们在应用场景上也有所不同。C语言...
数组指针、指针数组、函数指针、指针函数 枚举定义和使用 位操作运算符:&、|、~、^ main函数的参数、返回值 递归函数的栈实现原理应和应用特点 迭代函数的特点和应用 项目实战:学员签到管理系统 image.png 应用场景: 管理系统是最常见的软件,所有的管理系统的基本功能大体相似,主要是增加、修改、删除、查找以及统计。