- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
template <class T>
class autoptr
{
private:
T * _ptr;
public:
autoptr()
{
_ptr = 0;
}
autoptr( T * ptr )
{
_ptr = ptr;
}
~autoptr()
{
if(_ptr) delete _ptr;
}
operator T * ()
{
return _ptr;
}
T * operator -> ()
{
return _ptr;
}
T * get()
{
T *ret = _ptr;
_ptr = 0;
return ret;
}
};
template <class T>
class autoptr_mas
{
// ...
по всему видно считал себя умней всех
Верный призрак:
> if(_ptr) delete _ptr;
Тоже бессмысленно и беспощадно.
В идеале должно быть так:
так ведь std::auto_ptr должен быть задепрекачен, буста нет, c++11 нет, а кому охота пользоваться задепрекаченными в будущем классами? свой то вот он, никто не посмеет, всегда будет актуален!
A: Вот так:
бдыщ
считай, что там стоит nullptr/NULL, если так будет понятней