相关疑难解决方法(0)

C++中的静态构造函数?我需要初始化私有静态对象

我想要一个具有私有静态数据成员的类(包含所有字符az的向量).在java或C#中,我可以创建一个"静态构造函数",它将在我创建类的任何实例之前运行,并设置类的静态数据成员.它只运行一次(因为变量是只读的,只需要设置一次),因为它是类的一个函数,它可以访问它的私有成员.我可以在构造函数中添加代码来检查向量是否已初始化,如果不是,则初始化它,但是这会引入许多必要的检查,并且似乎不是问题的最佳解决方案.

我想到,因为变量只是只读的,所以它们只能是公共的静态const,所以我可以在类外面设置它们,但是再一次,它看起来有点像丑陋的黑客.

如果我不想在实例构造函数中初始化它们,是否可以在类中拥有私有静态数据成员?

c++ static private static-constructor initializer

172
推荐指数
8
解决办法
15万
查看次数

什么是静态构造函数?

我在接受采访时问过这个问题:

什么是静态构造函数?

它存在于C++中吗?如果是,请举例说明.

c++

62
推荐指数
4
解决办法
5万
查看次数

在C++中没有静态构造函数的基本原理是什么?

在C++中没有静态构造函数的基本原理是什么?

如果允许,我们将以非常有组织的方式在一个地方初始化其中的所有静态成员,如下所示:

//illegal C++
class sample
{
public:

    static int some_integer;
    static std::vector<std::string> strings;

    //illegal constructor!
    static sample()
    {
       some_integer = 100;
       strings.push_back("stack");
       strings.push_back("overflow");
    }
};
Run Code Online (Sandbox Code Playgroud)

在静态构造函数的缺失中,很难有静态向量,并用值填充它,如上所示.静态构造函数优雅地解决了这个问题.我们可以以非常有组织的方式初始化静态成员.

那么为什么'C++没有静态构造函数?毕竟,其他语言(例如,C#)具有静态构造函数!

c++ language-features constructor language-design static-constructor

29
推荐指数
4
解决办法
6479
查看次数