静态构造函数顺序是否与组合一致

时间:2015-11-21 22:25:03

标签: c++ constructor static composition

我非常清楚一般的静态构造函数顺序问题,但我很想知道这是否也适用于组合。

说我有以下内容:

#include <vector>
using std::vector;

class Foo
{
    static vector<int> myVector;
    Foo(int i) { myVector.push_back(i); }
    ~Foo() {}
};

vector<int> Foo::myVector;
Foo foo_1(1);
Foo foo_2(2);

我是否保证在致电Foo的ctor之前会调用myVector的ctor?

毋庸置疑,对此进行测试并发现它确实可以正常工作。

1 个答案:

答案 0 :(得分:1)

不同编译单元的订单未定义。 在同一个编译单元中,订单定义明确:与定义相同的顺序。

因此,您的矢量将在<div ng-controller="mainCtrl"> <p>{{data.value}}</p> <myDirective oncolour="green" offcolour="red" data="data.value"></myDirective> </div> foo_1之前初始化。