mat类opencv中的begin()方法声明

时间:2013-11-14 17:54:50

标签: c++ opencv iterator

在查看使用begin()方法的opencv参考手册时,我提出了以下声明:

template<typename _Tp> MatIterator_<_Tp> Mat::begin()

我不是很擅长C ++,我只是想知道“MatIterator”是什么以及整个使用“_”是什么? (它在C ++中有什么特殊含义)

1 个答案:

答案 0 :(得分:1)

C ++中下划线附加的唯一特殊含义是,_Tp等带有下划线,后跟另一个下划线或大写字母的名称将保留用于实现。

尾随下划线(如MatIterator_)通常用于表示班级成员。

从事物的外观来看,MatIterator_是一种类型,显然用作矩阵上的迭代器。

关于整个声明,它看起来像:

“template”“&lt;” 模板参数“&gt;” return-type * function-name *“(” function-parameters “)”

其中:

template-parameter classtypename后跟任意名称(它也可以是非类型模板参数或模板模板参数,但我们不会进入它们,因为这段代码没有使用)。实例化模板时,此名称将表示实例化的类型。

return-type 只是某种类型,它将是函数返回的类型。在这种情况下,它取决于模板参数,因此它表示“对于某些类型_Tp,这将返回一个名为MatIterator<_Tp>”的类型。

function-name 只是您定义的函数的名称。在这种情况下,它是一个成员函数,因此它的形式为“class-name :: member-name”。

在这种情况下,

函数参数是空的,所以我们也不会进入它。