0

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

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

我不太擅长 C++,我只是想知道 "MatIterator" 是什么以及 "_" 的全部使用是什么?(它在C++中有什么特殊含义吗)

4

1 回答 1

1

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

结尾的下划线(如 in MatIterator_)通常用于表示类成员。

从表面上看,MatIterator_是一种类型,显然用作矩阵的迭代器。

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

“模板”“<”模板参数“>”返回类型*函数名称*“(”函数参数“)”

在哪里:

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

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

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

在这种情况下, function-parameters是空的,所以我们也不会进入它。

于 2013-11-14T18:01:07.577 回答