Почему T :: T :: T :: T :: T :: T совпадает с T для имени класса? [Дубликат]

В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.

Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.

Оператор == проверяет, являются ли две строки точно одним и тем же объектом.

Метод .equals() проверяет, имеют ли две строки одно и то же значение.

8
задан Eloy 30 November 2017 в 14:50
поделиться

1 ответ

В классах C ++ есть функция ввода их имени в свою область действия ( [класс] / 2 ):

Имя класса также вставляется в объем самого класса; это известно как имя введенного класса . Для проверки доступа имя введенного класса рассматривается так, как если бы это было публичное имя участника.

. В приведенном фрагменте кода используется Это. В определенных контекстах Commitment::Commitment называет сам класс, а в других - c'tor. Только последний Commitment(, где вы открываете круглые скобки, начинается определение c'tor.

И это может выглядеть намного хуже:

struct foo {
    foo();
};

foo::foo::foo::foo() = default;

Который вы можете видеть действительный C ++ Live .

11
ответ дан StoryTeller 15 August 2018 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: