C++ - 初始化静态成员它自己的方法

标签 c++ oop methods static initialization

是否可以使用自己的方法初始化静态成员,例如。初始化()?

例子:

class Foo
{
//some private variables
public:
static Bar example;
//some methods
}

然后在 main.cpp 中这样调用它:

Foo::example.initialize(argument);

当然不行。它还缺乏封装,因为变量是公共(public)的。我希望它是私有(private)的并且只初始化一次。除了用方法初始化它之外,我别无选择。

最佳答案

初始化对象的默认方式应该是通过它的默认构造器。

如果确实需要,则可以使用单例(请注意这是一个反模式:What is an anti-pattern?,还有 What is so bad about singletons?)

class Singleton
{
public:
    static const Bar& getBarInstance()
    {
        static Bar bar;

        return bar;
    }
};

这只会被初始化一次。

关于C++ - 初始化静态成员它自己的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50024486/

相关文章:

c++ - 我们可以在一个 STL 列表中保存 2 种数据类型吗?

java - 如何添加priceAfterDiscount的公共(public)方法来返回折扣后的价格

php - 使用 mysqli 和 oops 创建数据库并在数据库中插入值

C++ cout in 方法良好的编程风格

Java - 方法选择算法

c++ - 如何定义可用于存储指向 int 的指针和指向 int 容器的迭代器的变量?

c++ - FStream 读取用 Delphi 的二进制编写器编写的二进制文件

C++ 项目未编译

java - 房间/节点导航和管理连接

ruby-on-rails - Ruby 通过自定义方法找到?