我想了解在我使用的庫中實現的類中使用的構造函數。類SequenceAnalyzer的主要組成部分是這樣的:通過引用對象構造一個類
class SequenceAnalyzer {
protected:
std::vector<cv::Mat> images_;
public:
SequenceAnalyzer(std::vector<cv::Mat> *images = NULL)
{
if (images != NULL)
images_ = (*images);
}
};
當我的主要構建這個類的一個實例,我將它傳遞一個參考向量:
std::vector<cv::Mat> myImages;
SequenceAnalyzer se(&myImages);
現在在我的圖像通過引用傳遞將他們的位置傳遞給班級。但是我對(* images)操作符的理解意味着它們的地址已被解除引用,因此=操作符會複製這些內容。
以這種方式將myImages傳入課程有什麼好處嗎?爲什麼指針首先被使用,如果它不以保存的複製開銷結束呢?
我在這裏沒有看到任何引用。 –
如果你指的是引用和指針之間的區別,恐怕這對我來說是一個朦朧的話題。如果您指的是我在說的是哪個庫,則是[OpenCV Structure from Motion library project](http://code.google.com/p/gsoc2011sfm/)。 – Chris
您將它作爲指針傳遞給'vector'對象myImages。 –
Praveen