在查看使用 begin() 方法的 opencv 参考手册时,我得出以下声明:
template<typename _Tp> MatIterator_<_Tp> Mat::begin()
我不太擅长 C++,我只是想知道 "MatIterator" 是什么以及 "_" 的全部使用是什么?(它在C++中有什么特殊含义吗)
C++ 中下划线的唯一特殊含义是,_Tp
下划线后跟另一个下划线或大写字母之类的名称保留用于实现。
结尾的下划线(如 in MatIterator_
)通常用于表示类成员。
从表面上看,MatIterator_
是一种类型,显然用作矩阵的迭代器。
至于整个声明,它看起来像:
“模板”“<”模板参数“>”返回类型*函数名称*“(”函数参数“)”
在哪里:
template-parameter可以是任意名称,class
也typename
可以后跟任意名称(它也可以是非类型模板参数或模板模板参数,但我们不会深入探讨它们,因为这段代码没有使用任何名称)。当您实例化模板时,此名称将表示它被实例化的类型。
return-type只是某种类型,它将是函数返回的类型。在这种情况下,它取决于模板参数,所以它说“对于某些类型_Tp
,这将返回一个名为MatIterator<_Tp>
”的类型。
function-name只是您定义的函数的名称。在这种情况下,它是一个成员函数,所以它的形式是“class-name :: member-name”。
在这种情况下, function-parameters是空的,所以我们也不会进入它。