关于编程,某些东西是可传递的,这意味着什么?一个例子如下(来自这里):
对于非限定查找,使用指令是可传递的:
我知道这个特定声明的详细说明,但是,我正在努力寻求更一般的与编程相关的解释。
二元关系~是可传递的当且仅当a ~ b和b ~ c暗示a ~ c。
(例如,“高于”是可传递的;“住在隔壁”则不是。)
在这种特殊情况下,A是usingB,B是usingC,using直接和A C效果一样。
传递是形式逻辑中的一个术语。这意味着“如果 A 与 B 具有传递关系并且 B 与 C 具有相同的关系,则 A 与 C 具有这种关系”。
例如,平等是一种传递关系。如果A == B和B == C再传递是允许A == C是真实的。同样,小于是传递关系,这意味着 ifA < B和B < Cthen A < C。
对于 using 指令,意思是如果作用域包含指定命名空间名称的 using 指令,该指令本身包含用于第二个命名空间名称的 using 指令,则效果就好像来自第二个命名空间的 using 指令出现在第一个中.
在代码中,这意味着
namespace B
{
int foo;
}
namespace A
{
using namespace B;
}
using namespace A;
int main()
{
foo = 42; // resolves to B::foo
}
Run Code Online (Sandbox Code Playgroud)
在上面,fooinmain()解析为A::foo。由于A有using namespace B, foo在main()还解析B::foo。传递性是使这一切起作用的正式名称。