Почему бы просто не использовать статическую переменную в качестве счетчика ссылок для интеллектуального указателя

Когда я проверяю интеллектуальный указатель «расширенной» версии - улучшение заключается в добавлении подсчета ссылок - я вижу, что они используют некоторые «сложные» методы для подсчета ссылок, например полностью отдельный класс или указатель, указывающий на целое число.

Вот один пример:

template<class T>
class SmartPointer{
  T* mp_T;
  unsigned int * mp_Count;
  public:
    ... all the APIs ...
};

Мне интересно, в чем выгода? Поскольку цель состоит в том, чтобы все экземпляры разделяли значение, почему бы просто не объявить его как статическую переменную-член:

template<class T>
class SmartPointer{
  T* mp_T;
  static unsigned int m_Count;
  public:
    ... all the APIs ...
};

Я должен что-то пропустить, но после некоторого поиска я не могу найти никакого ответа. Пожалуйста, пролей немного света.

5
задан ziu 2 November 2011 в 16:42
поделиться