是否为对象数组立即调用构造函数作为类的成员?

时间:2011-11-22 21:38:40

标签: c++ class constructor

class gene{
    int ind;

    gene() {
        ind = 0;
    }
}

class network {
    gene g[10];
}

main() {
    network n;
}

我应该为g数组中的每个对象调用构造函数,还是会自动调用它?

例如,我应该按如下方式更改网络类:

class network {
    gene g[10];

    network() {
        for(int i = 0; i < 10; i++)
            g[i] = gene();
    }
}

1 个答案:

答案 0 :(得分:7)

在你的情况下,因为gene有一个非平凡的默认构造函数,所以数组的每个元素都将默认为你构造。即,不,你的改变是不必要的。

在您的数组的基础类型是POD类型的情况下,您需要手动初始化元素。但是,你这样做的方式并不理想;您可能希望使用 value-initialization

class network {
    somePodType x[10];
public:
    network() : x() { }
};