Что означает qualify?
при чтении статей, учебных пособий и т. д... о программировании, я всегда сталкиваюсь со словом qualified
. как и в java, полное имя класса будет com.образец.Класс. Чтение
этой статья, определяет оператор разрешения области ::
в C++ как используемый для квалификации скрытых имен, чтобы вы могли их использовать. Есть ли для этого определение ? Потому что он, кажется, используется в другом контексте каждый раз.
2 ответов
в компьютерном программировании, полное имя-это однозначное имя указывает, к какому объекту, функции или переменной относится вызов без учета контекста призыва. В иерархическая структура, имя полностью определено, когда оно " завершено в том смысле, что он включает (а) все имена в иерархической последовательности над данным элементом и (b) название данного элемента себя."Таким образом, полностью квалифицированные имена явно ссылаться на пространства имен в противном случае это было бы неявным из-за области вызова. Хотя это всегда делается для устранения двусмысленности, это может означать разные все зависит от контекста.
короче говоря, это значит, что,
у вас может быть класс с именем Math
в вашем проекте, но Math
уже присутствует в Java.
Итак, для однозначного определения того, какой класс вы собственно говоря, нужно тоже уточнить имя пакета:
java.lang.Math //refers to java class Math
org.myproject.Math //refers to your project Math class
От Мерриама Вебстера
полное определение квалификации
транзитивный глагол Один a: для перехода от общей к конкретной или ограниченной форме: изменить b : сделать менее жестким или строгим: умеренный c : изменить прочность или вкус d: ограничить или изменить значение (как существительное) Два : характеризовать имя атрибута : описание Три a : приспосабливать тренировкой, искусством, или способностью для специальной цели Б (1) : для объявить компетентным или адекватным: сертификат (2) : инвестировать с правоспособностью : лицензия
применяются пункты 1 и 2. Java и C++ имеют области/пространства имен, а "квалификация" означает введение достаточных областей для различения потенциальных кандидатов.
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() :)