В чем разница между оператором точки и оператором разрешения области

Я просто хотел узнать разницу между. оператор и:: оператор?

3 ответа

Решение

Бывший (точка, .) используется для доступа к членам объекта, последний (двойное двоеточие, ::) используется для доступа к членам пространства имен или класса.

Рассмотрим следующую настройку.

namespace ns {
    struct type
    {
        int var;
    };
}

В этом случае, чтобы обратиться к структуре, которая является членом пространства имен, вы используете ::, Для доступа к переменной в объекте типа type, ты используешь .,

ns::type obj;
obj.var = 1;

Еще один способ думать о четырехточечной '::' - это scope resolution operator. В случаях, когда в области видимости находятся несколько объектов с одинаковым именем. Вы явно заявляете, какой использовать:

 std::min(item, item2);

или же

mycustom::min(item, item2);

Точечный оператор '.' это вызывать методы и атрибуты экземпляра объекта

Myobject myobject;
myobject.doWork();
myobject.count = 0;
// etc 

Это не было задано, но есть другой оператор, который нужно использовать, если экземпляр объекта создается динамически с new, это оператор стрелки '->'

Myobject myobject2 = new Myobject();
myobject2->doWork();
myobject2->count = 1;

Если вы используете указатель на экземпляр объекта, вам нужно получить доступ к членам объекта, используя -> вместо "точки"

Другие вопросы по тегам