首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

别人的帖子(关于容器管理很多类),小弟我没看懂

2012-03-28 
别人的帖子(关于容器管理很多类),我没看懂,原帖子: http://topic.csdn.net/u/20120125/22/e79a09f8-54a7-4

别人的帖子(关于容器管理很多类),我没看懂,
原帖子: 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
[解决办法]
私有对象赋值那就自身调用呗~只要是成员函数或者友元都可以~智能指针一般使用构造函数然后再析构里面释放掉~
至于第二个问题~标准库函数已经解决的差不多了~

热点排行