В чем разница между оператором точки и оператором разрешения области
Я просто хотел узнать разницу между. оператор и:: оператор?
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;
Если вы используете указатель на экземпляр объекта, вам нужно получить доступ к членам объекта, используя -> вместо "точки"