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

Is the constructor called immediately for an array of objects as a member of the class?

本文关键字:调用 构造函数 对象 成员 数组      更新时间:2023-10-16
class gene{
    int ind;
    gene() {
        ind = 0;
    }
}
class network {
    gene g[10];
}
main() {
    network n;
}

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

e。g,我是否应该按如下方式更改网络类:

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

在您的示例中,由于gene有一个重要的默认构造函数,因此数组的每个元素都将为您缺省构造。也就是说,不,你的改变是不必要的。

在数组的基础类型是POD类型的情况下,需要手动初始化元素。然而,你这样做的方式并不理想;您可能希望使用值初始化来代替:

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