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

标签 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();
    }
}

最佳答案

在你的例子中,因为 gene 有一个非平凡的默认构造函数,数组的每个元素都将为你默认构造。即,不,您的更改是不必要的。

如果您的数组的底层类型是 POD 类型,您需要手动初始化元素。但是,您这样做的方式并不理想;你会想使用值初始化来代替:

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

关于c++ - 是否立即为对象数组调用构造函数作为类的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234173/

相关文章:

c++ - 如何使用库的头文件生成 libfoo.sym 文件以与 libtool -export-symbols 一起使用?

c++ - 在代码中解释继承?

Java:1.1:从该类创建类的实例。 1.2:实例化的线程化

c++ - 有人可以解释这个 C++ 语法吗?

c++ - 抽象类,拷贝构造函数

c++ - 如何原子地比较和递增?

python - 多处理不保留结果

java - 如何从原始类文件中找出依赖的类?

javascript - `constructor` 属性的真正用途是什么?

使用泛型时的 C# 构造函数问题