什么是合格的意思?

时间:2013-09-14 14:58:32

标签: java c++ computer-science

在阅读有关编程的文章,手册等时,我总会遇到qualified这个词。就像在java中一样,完全限定的类名是com.example.Class。读 this文章将C ++中的范围解析运算符::定义为用于限定隐藏名称,以便您仍然可以使用它们。这有定义吗?因为它似乎每次都在不同的环境中使用。

2 个答案:

答案 0 :(得分:11)

  

在计算机编程中,完全限定名称是 明确名称   指定调用引用的对象,函数或变量   不考虑呼叫的背景。在一个   层次结构,名称在“完成”时完全合格   从某种意义上说,它包括(a)层次序列中的所有名称   在给定元素之上和(b)给定元素的名称   “因此,完全限定名称明确指代名称空间   否则由于调用的范围而隐含。   虽然总是要消除歧义,但这可能意味着不同   依赖于背景的事情。

Source Wikipedia

简而言之,就是

您的项目中可以有一个名为Math的类,但Java中也存在Math

因此,为了明确地确定您实际指的是哪个类,您还需要使用包来限定名称:

java.lang.Math //refers to java class Math
org.myproject.Math //refers to your project Math class

答案 1 :(得分:2)

来自Merriam Webster

  

QUALIFY的完整定义

     及性动词   1   a:从一般形式减少到特定形式或限制形式:修改   b:减少严厉或严格:温和   c:改变其强度或味道   d:限制或修改(作为名词)的含义   2   :通过命名属性进行表征:describe   3   a:通过培训,技能或能力来达到特殊目的   b(1):宣布有资格或足够:证明(2):具有法律行为能力的投资:许可证

第1和2条适用。 Java和C ++都有范围/命名空间,“qualify”意味着引入足够的范围来区分潜在的候选者。

C.f。:如果您有两个类,其成员名为“read”。

class Foo {
    void read();
};

class Bar {
    void read();
};

在您的实现文件中,您将实现这两​​个功能。但如果你写了(C ++)

void read() {}

这是有效的,但它在全局命名空间中创建了一个函数,而不是实现这两个函数中的一个。在类Foo定义中编写的相同代码将实现Foo :: read。

因此,要在类定义之外实现我们的成员函数,我们必须限定 - 从常规中减少,以命名容器路径的属性 - 我们正在实现的读取。

void Foo::read() {}
void Bar::read() {}

全局命名空间是“::”,因此如果您尝试使用它,您甚至可以明确:

void ::read() {}  // note: this name is already taken by stdio's read() :)