Я нашел похожий код, подобный показанному ниже, и меня смущают две вещи. Первый: возможно ли иметь объект класса внутри определения класса, как в примере ниже в коде 1? Хотя это было невозможно, но, возможно, ключевое слово stati c делает это возможным. Это правильно? что на самом деле здесь происходит?
Во-вторых, я узнал, что мы можем получить доступ к переменным-членам stati c и функциям-членам stati c класса, просто вызвав имя класса и оператор разрешения контекста (и нужный нам член) , Очевидно, способ, описанный в code1, является альтернативным способом сделать это. Итак, в чём же основное отличие (или преимущество) такого подхода? Другими словами, в чем разница между кодом 1 и кодом 2?
//CODE 1
namespace LOGGER {
class Logger;
}
class LOGGER::Logger {
void foo(){}
public:
static Logger logger;
};
int main()
{
LOGGER::Logger::logger.foo();
}
//CODE 2
namespace LOGGER {
class Logger;
}
class LOGGER::Logger {
public:
static void foo(){}
};
int main()
{
LOGGER::Logger::foo();
}