Я пытаюсь понять конструктор, используемый в классе, реализованном в библиотеке, которую я использую.Ключевые компоненты класса SequenceAnalyzer выглядят так:
class SequenceAnalyzer {
protected:
std::vector<cv::Mat> images_;
public:
SequenceAnalyzer( std::vector<cv::Mat> *images = NULL )
{
if (images != NULL)
images_ = (*images);
}
};
При создании экземпляра этого класса в моем main я передаю ему ссылку на вектор:
std::vector<cv::Mat> myImages;
SequenceAnalyzer se(&myImages);
Теперь переходим вмои изображения по ссылке передали классу свое местоположение в памяти.Но мое понимание оператора (* images) означает, что их адрес был разыменован, и поэтому оператор = затем копирует содержимое.
Есть ли какое-либо преимущество в передаче myImages в класс таким образом?Почему указатели используются в первую очередь, если они все равно не заканчиваются на сохраненных копиях?