не могу понять код c++
void my_namespace::object::output_info(wfstream & wfst)
почему название этой функции такое большое? зачем двоеточия?
P.S. я начинающий знаю что вопрос тупой
Ответы (2 шт):
:: - это оператор, который используется для уточнения (квалификации) имен.
Бинарный оператор :: уточняет область видимости в которой находится имя.
С левой стороны должна быть указана область видимости, с правой стороны - уточняемое имя.
Предполагаю что здесь используется пространство имен, внутри которого используется объект с указанным методом.
:: означает, что имя (которое справа от ::) нужно искать внутри класса/пространства имен/... (которое указано слева от ::).
Судя по названиям, my_namespace - пространство имен, в нем есть класс object, а в нем метод output_info.
Указывать ИмяКласса:: нужно, когда метод определяется отдельно от класса, пример:
class A
{
public:
void foo();
};
// Возможно в другом файле:
void A::foo() {...}
Указывать ПространствоИмен:: можно вместо того, чтобы заворачивать функкцию в namespace ПространствоИмен {...}.
Например этот код:
void my_namespace::object::output_info(wfstream & wfst) {...}
можно заменить на:
namespace my_namespace
{
void object::output_info(wfstream & wfst) {...}
}
Но это работает только если функция уже объявлена. Пример:
// Без этой строки работать не будет:
namespace A {void foo();}
void A::foo() {...}