2016-03-08 5 views
2

Разница между этими двумя неясна для меня. То, что я прочитал о них, было очень массивным и сложным (как C++). Например, this one, который принадлежит много лет тому назад и из WikiPedia. Вероятно, проблема сама по себе сложна.Разница между RAII и умными указателями в C++

Что я думаю о них, то RAII - это механизм, который мы используем для интеллектуальных указателей, но я не уверен в этом. Мне нужен простой и понятный ответ.

Не могли бы вы объяснить это на простом языке с небольшим примером кода? Пожалуйста, имейте в виду, что я на низком уровне в C++.

ответ

2

RAII - это идея использования автоматического вызова деструктора C++ для освобождения ресурсов, полученных в конструкторе.

Сокращение указывает, что только неопределенно, Приобретение ресурсов - это Инициализация.

A smart pointer - класс, который перегружает не менее operator-> и разыменовывает operator*, чтобы включить использование с обозначением указателя. Обычно смарт-указатель будет использовать методы RAII для автоматического освобождения памяти. Но он может делать другие вещи. Однако неясно, что смарт-указатель каким-то образом имеет дело с ” владельцем ” содержащегося необработанного указателя. Например, простой класс итератора перегружает operator-> и operator*, но не считается интеллектуальным указателем.

3

Это бесплатные концепции. RAII означает, что объекты автоматически заботятся о своих собственных ресурсах. Умные указатели - это способ выполнения RAII для выделенной памяти.

+1

Thanks Mark. Так что я думаю о них правильно! :) – Franky

2

RAII представляет собой метод:

Получение ресурса есть инициализация или RAII, представляет собой метод программирования C++, [1] [2], который связывает жизненный цикл ресурса (выделенной памяти, поток выполнения, открытый сокет, открытый файл, заблокированный мьютекс, соединение с базой данных - все, что существует в ограниченных источниках), до срока службы объекта с автоматической продолжительностью хранения.

Концепция Raii включает в себя все ограниченные ресурсы, в то время, как ожидается, Smart points управлять динамически выделенной памятью или любым ресурсом, представленный простым указателем, следуйте RAII.