C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用。 智能指针的作用:管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域...
我简单的总结下就是:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。 因此,要转换remodel()函数,应按下面3个步骤进行: 包含头义件memory(智能指针所在的头文件); 将指向string的指针替换为指向string的智能指针对象; 删除delete...
智能指针是一个存储指向动态分配(堆)对象指针的类,构造函数传入普通指针,析构函数释放指针。栈上分配,函数或程序结束自动释放,防止内存泄露。使用引用计数器,类与指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建,增加引用...
const int *a; a是一个指向常整型数的指针,整型数是不可修改的,但指针可以 int * const a; a为指向整型数的常指针,指针指向的整型数可以修改,但指针是不可修改的 int const * a const; a是一个指向常整型数的常指针,指针指向的整型数是不可修改的,同时指针也是不可修改的 通过给优化器一些附加的信息,...
运行过程中需要动态增删的vector,不宜存放大的对象本身 ,因为扩容会导致所有成员拷贝构造,消耗较大,可以通过保存对象指针替代。 resize()是重置大小;reserve()是预留空间,并未改变size(),可避免多次扩容; clear()并不会导致空间收缩 ,如果需要释放空间,可以跟空的vector交换,std::vector .swap(v),c++11里shrink_...
2)指针可以是const 指针,也可以是指向const对象的指针 3)定义为const的形参,即在函数内部是不能被修改的 4)类的成员函数可以被声明为常成员函数,不能修改类的成员变量 5)类的成员函数可以返回的是常对象,即被const声明的对象 6)类的成员变量是常成员变量不能在声明时初始化,必须在构造函数的列表里进行初始化 ...
为避免遗漏,使用智能指针(如 C++ 中的std::unique_ptr和std::shared_ptr)自动管理资源。 14、如何实现一个ring buffer以及用途 环形缓冲区(Ring Buffer)是一种固定大小的数据结构,常用于实现数据的流式传输或临时存储。在环形缓冲区中,当到达缓冲区的末尾时,它会回绕到开始部分,从而形成一个“环”。这种结构非常...
增加了std::atomic:让智能指针线程安全 source_location:可作为__LINE__ 、__func__这些宏的替代: #include <iostream>#include <string_view>#include void log(const std::string_view message, const std::source_location& location = std::source_location::current()){ std::cout << 'info: ' <<...
随着C++版本的不断迭代,如C++11、C++14、C++17等,语言特性逐渐丰富和完善。现代C++引入了诸如智能指针、范围基元、模板元编程、类模板和模块系统等高级特性,进一步提高了代码的可读性和可维护性。在中国,C++是许多大学计算机科学课程的必修内容。程序员们通过学习C++,不仅能够掌握一种强大的编程语言,...
函数指针和指针函数有什么区别? 数组名和指针的区别与联系是什么? 指针进行强制类型转换后与地址进行加法运算,结果是什么? 常量指针,指向常量的指针,指向常量的常量指针有什么区别? 指针和引用的异同是什么?如何相互转换? 野指针是什么? C++中的智能指针是什么?