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> >();
}

。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值