我非常清楚一般的静态构造函数顺序问题,但我很想知道这是否也适用于组合。
说我有以下内容:
#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?
毋庸置疑,对此进行测试并发现它确实可以正常工作。
答案 0 :(得分:1)
不同编译单元的订单未定义。 在同一个编译单元中,订单定义明确:与定义相同的顺序。
因此,您的矢量将在<div ng-controller="mainCtrl">
<p>{{data.value}}</p>
<myDirective oncolour="green" offcolour="red" data="data.value"></myDirective>
</div>
和foo_1
之前初始化。