当有一个简单的 qtest 比较用户定义结构的 2 个不同对象时:
Test a, b = {1};
QCOMPARE(a, b);
为什么有区别:
(1)
static char* toString(const Test &)
{
using QTest::toString;
return toString("Test");
}
和
(2)
namespace {
char* toString(const Test &)
{
using QTest::toString;
return toString("Test");
}
} // unnamed namespace
第一个在比较对象时确实调用了该函数,第二个没有!
正如这个结论中提到的,除了匿名命名空间允许您定义翻译单元本地类型之外,应该没有区别。好吧,这里看起来正好相反。