c++11智能指针的学习

Posted by Roy Zhang on 2019-08-21

std::shared_ptr智能指针是C++重要的特性,但是有一个问题他不支持动态数组。

1
2
3
4
5
std::shared_ptr<int []> sp1(new int[10]); // 错误 C++11没有这个特性
std::shared_ptr<int []> sp1(new int[10], std::default_delete<int[]>());//正确
std::shared_ptr<int> sp2(new int[10]); //错误,可以编译但是未定义行为

std::unique_ptr<int[]> up1(new int[10]); //正确

如何使用构造shared_ptr和unique_ptr的方法

1
2
3
4
5
6
7
8
9
std::shared_ptr<int> p(new int(10));
//
std::shared_ptr<classa> class_ptr;
class_ptr = std::make_shared<classa>(para1,param2);
//shared_ptr用在方程里面
virtual void setSignal(std::shared_ptr<Signal> const & signal){};
//unique_ptr
std::unique_ptr<nmea_utils::GNSSNMEAParser> m_parser;
m_parser = std::unique_ptr<nmea_utils::GNSSNMEAParser>(new nmea_utils::GNSSNMEAParser(parm1,parm2));