c++智能指针
1:shared_ptr
shared_ptr可以用于管理简单的数据,int,double,char等
eg:
shared_ptr<int> sp (new int);
*sp = 100;
std::cout<<*sp<<std::endl;
shared_ptr可以用于管理用户自定义的类
eg:
class Sample {
public:
Sample() { cout << "Sample Constructor" << endl; }
~Sample() { cout << "Sample Destructor" << endl; }
void publicFn() { cout << "This is public function of class" << endl; }
};
int main() {
shared_ptr<Sample> sp(new Sample{});
sp->publicFn();
return 0;
}
shared_ptr管理数组需要自定义删除方法
eg:
bool del(int *p){
delete [] p;
}
shared_ptr<int> shared(new int[100],del);//使用函数
shared_ptr<int> ptr(new int[100],
[](int *p){delete [] p;});//使用lambda表达式
若是要对与其中的数据进行管理,则可以使用get,同时以下代码对比unique_ptr的使用
std::unique_ptr<int[]> uniPtr (new int [100]);
uniPtr[0] = 100;
std::cout<<uniPtr[0]<<std::endl;
std::shared_ptr<int> spi (new int[100],[](int *p){
delete []p;
});
spi.get()[20]=50;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现