小编jbo*_*sch的帖子

静态数据成员作为C ++默认参数是否安全?

使用静态数据成员作为默认参数值时,我是否需要担心静态初始化顺序的失败?例如:

class Thing {

    static double const default_blarg;  // initialized in another file

    void run(double blarg=default_blarg);

};
Run Code Online (Sandbox Code Playgroud)

我知道default_blarg将在链接时在一个几乎未指定的点初始化,但是我不确定默认参数to何时run初始化。如果是在某个时候default_blarg被初始化过,那么我可以使用哪种方法安全地将默认值作为类接口的一部分公开而不重复呢?使用constexpr静态数据成员可以使其安全吗?

请注意,我知道如果default_blarg不是const ,这可能会产生一些非常令人困惑的行为(这就是原因),并且我也没有尝试使用非静态数据成员。

c++ initialization

6
推荐指数
2
解决办法
152
查看次数

标签 统计

c++ ×1

initialization ×1