Когда я проверяю интеллектуальный указатель «расширенной» версии - улучшение заключается в добавлении подсчета ссылок - я вижу, что они используют некоторые «сложные» методы для подсчета ссылок, например полностью отдельный класс или указатель, указывающий на целое число.
Вот один пример:
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 ...
};
Я должен что-то пропустить, но после некоторого поиска я не могу найти никакого ответа. Пожалуйста, пролей немного света.