我为c样式数组编写了一个不错的比较模板,如下所示。 唯一的问题是:在以下简单代码中,编译器未应用operator ==(找不到?):
int Array1[3];
int Array2[3];
bool is_equal = ( Array1 == Array2 );
这是我的模板
template<typename T, size_t N>
bool operator==( const T ( &A )[N], const T ( &B )[N] )
{
for ( int i = 0; i < N; ++i )
{
if ( A[i] != B[i] )
{
return false;
}
}
return true;
}
如果我将operator==(...)
重命名为Equals(...)
,一切正常。
这是为什么?
我也不确定const在函数中的位置。显然,对于任何好的比较运算符,我都想使用'const&'。