读书人

别人的帖子(关于容器管理很多类)小

发布时间: 2012-03-28 15:40:03 作者: rapoo

别人的帖子(关于容器管理很多类),我没看懂,
原帖子: http://topic.csdn.net/u/20120125/22/e79a09f8-54a7-45d3-bead-1ba9b7cdf1f4.html


是关于一个容器管理很多类的问题。。。。。


primer中提到用智能指针来解决, 容器存放智能指针。。




于是我写了一个简单的智能指针类

不知道如何完善下去了。。。。



Base是基类,Derived是继承类,MySmartPtr是智能指针类


如何给MySmartPtr中的指针成员进行分配内存啊??


代码如下:

class Base
{

//构造和析构
public:
Base():data(0){}
~Base(){}

//interface member funciton
public:
void Print() const
{
cout<<data;
}
//data
private:
int data;

//other member funciton
public:
//返回该对象的副本
virtual Base* clone() const
{
return new Base(*this);
}

};


class Derived:public Base
{
public:
//返回该对象的副本
Derived* clone() const
{
return new Derived(*this);
}

};



//智能指针类
class MySmartPtr
{
private:
Base* p;
size_t * use;
private:
void decr_use()
{
if ( (-- *use)==0 )
{
delete p;
delete use;
}
}

public:
MySmartPtr():p(NULL),use(new size_t(1)){}
~MySmartPtr()
{
decr_use();
}

const Base* operator->() const throw (logic_error)
{
if(p)
return p;
else
throw logic_error(string("空指针"));
}

};

1. MySmartPtr提供的借口 -> ,是获得其成员指针, 首先得保证p已经指向一块内存,才能使用, 要指向内存,需要分配内存啊,,

怎么给成员p分配内存。。。。。。。

2. 用容器管理 很多类, 智能指针类,真的可行吗???





[解决办法]
2 可以 有很多现场智能指针可以使用 如:unique_ptr
[解决办法]
私有对象赋值那就自身调用呗~只要是成员函数或者友元都可以~智能指针一般使用构造函数然后再析构里面释放掉~
至于第二个问题~标准库函数已经解决的差不多了~

读书人网 >C++

热点推荐