首页 > 解决方案 > 什么是类的静态对象,在类定义中,调用类的静态成员函数有哪些不同的方法?

问题描述

我发现了一个类似的代码,如下所示,有两件事让我感到困惑。第一个,是否可以在类的定义中拥有类的对象,如下面代码 1 中的示例所示?我虽然这是不可能的,但也许静态关键字使这成为可能。这是正确的吗?这里到底发生了什么?

第二个,我了解到我们可以通过调用类名和作用域解析运算符(以及我们想要的成员)来访问类的静态成员变量和静态成员函数。显然,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();
}

标签: c++staticstatic-members

解决方案


推荐阅读