c++ smart pointer之shared_ptr

1.问题描述

在使用C++内置的raw pointer时经常会因为内存引用或delete等原因造成segment fault一类的问题,这类问题解决起来是非常繁琐而头疼的。因此C++库提供了smart pointer来替代程序员们管理内存和指针等问题,本文主要介绍其中的shared pointer的使用方法。

参考:http://wiki.inkscape.org/wiki/index.php/Boost_shared_pointers

2.代码示例及讲解

。。。

#include <boost/shared_ptr.hpp>

using namespace boost;

template <class T>

class Node{

public:

Node(int splitLevel);

// shared_ptr<Node<T> >代替raw pointer中的Node<T> *

Node(shared_ptr<Node<T> > lc, shared_ptr<Node<T> > rc, shared_ptr<Node<T> > parent,  int splitLevel); 

int getSplitLevel() { return this->splitLevel; }

。。

private:

int splitLevel;

shared_ptr<Node<T> > lc, rc, parent;

};


template <class T>
Node<T>::Node(int splitLevel, Element<T> e, Hyper<T> h){
    this->splitLevel = splitLevel;

   //将lc赋值为shared_ptr<Node<T> >(),即为赋值为NULL

  //判断其是否为NULL时,使用表达式“lc == shared_ptr<Node<T> >()”即可

  //欲获取lc的splitLevel值时,使用语句“lc->getSplitLevel() ”即可
    this->lc = shared_ptr<Node<T> >();
    this->rc = shared_ptr<Node<T> >();
    this->parent = shared_ptr<Node<T> >();
}

。。。

你可能感兴趣的:(c++ smart pointer之shared_ptr)