[英]Why can two objects of class Mat be added without overloading operator +?
從鏈接: https://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html
在 Mat class 的定義中,operator+ 沒有重載。 但是,oprator+可以用來添加兩個class Mat的對象。 這真的讓我很困惑。
By consulting the cv::Mat
documentation, the functionality you are looking for is under operator=(const MatExpr& expr)
: https://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#a2a0798475170fb3a23b5bc63686de334
具體來說,文檔的這一部分很有用(強調我的):
這是一個重載成員 function,為方便起見提供。 它與上述 function 的不同之處僅在於它接受的參數。
參數
expr
:分配的矩陣表達式 object。 與賦值操作的第一種形式相反,第二種形式可以重用已分配的矩陣,前提是它具有適合矩陣表達式結果的大小和類型。 它由矩陣表達式擴展為的實際 function 自動處理。 例如, C=A+B
擴展為add(A, B, C)
,並且 add 負責自動C
重新分配。
因此,正在發生的事情是重載的賦值運算符 ( =
) 是被調用的,而MatExpr
expr
是一個MatExpr
表達式,正在其右側進行評估。 碰巧被評估的表達式是加法運算符,因此執行兩個cv::Mat
的加法,然后在表達式的左側創建一個新矩陣。
這個故事的寓意是搜索文檔以找到您的答案。 我就是這樣發現的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.