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