Я пытаюсь создать собственную библиотеку интеллектуальных указателей в C ++, ради практики.
Теперь, я ДУМАЛ, что этот маленький проект будет легким, просто есть список указателей, другой список количество ссылок на указатель и класс интеллектуальных указателей для инкапсуляции всей этой сексуальной функциональности.
Ну, нет, конечно, все не так просто, и вскоре я столкнулся с проблемой. Учитывая произвольный указатель на память, выделенную из кучи, как мне написать свой класс, чтобы он каким-то образом в какой-то момент нашел правильную функцию удаления для использования в этом указателе (new -> delete, new [] -> delete [ ], malloc / reallo c -> free, et c.)
Кроме того, возникает вопрос, могу ли я предположить, что эта функция отмены распределения будет только когда-либо принимать на аргументе, что похоже на предположение, которое небезопасно делать, поскольку бог знает, что в некоторой библиотеке, которую я использую, возможно, скрыта функция выделения аргументов из двух аргументов.
Я мог бы решить это, сделав абстрактный класс, а затем потребовать пользователи моей библиотеки могут использовать только классы, производные от нее, с моей реализацией интеллектуального указателя, но это кажется грубым и откровенно не поучительным.
Я искал некоторое время и просто не могу найти себе подходящего ответ. Таким образом, я здесь, чтобы спросить, может ли кто-нибудь из вас объяснить мне, как реальные реализации интеллектуальных указателей решают эту проблему, как они справляются с этими проблемами? Они вообще беспокоятся?