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

Peg*_*gah 7 c++ constructor class

class gene{
    int ind;

    gene() {
        ind = 0;
    }
}

class network {
    gene g[10];
}

main() {
    network n;
}
Run Code Online (Sandbox Code Playgroud)

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

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

class network {
    gene g[10];

    network() {
        for(int i = 0; i < 10; i++)
            g[i] = gene();
    }
}
Run Code Online (Sandbox Code Playgroud)

ild*_*arn 7

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

如果您的数组的基本类型是POD类型的情况下,您需要手动初始化的元素.但是,你这样做的方式并不理想; 你会想要使用值初始化:

class network {
    somePodType x[10];
public:
    network() : x() { }
};
Run Code Online (Sandbox Code Playgroud)