数组元素的本地副本

时间:2015-03-09 18:13:55

标签: c++ arrays

为了使我的代码更具可读性,我在函数内部有一个局部变量,它接受一个数组中的指定元素,如下所示:

Element* elements = new Element[10];

void doSomething(int index) {
    Element element = elements[index];
    // do things with that element
}

这里发生了什么:元素是元素[index]的独立副本,在函数结束时被销毁?从我测试的内容来看,似乎是因为元素的变化不会影响元素[index],但是,我想知道幕后发生了什么。元素的赋值是否调用隐式复制构造函数?

2 个答案:

答案 0 :(得分:7)

是的,这恰好发生了什么(虽然这是初始化,而不是作业)。

您已将Element声明为对象,因此它是与任何其他Element分开的对象。它是通过复制其初始化程序elements[index]来初始化的。如果您还没有复制构造函数,那么它会使用隐式复制构造函数,复制每个成员。

如果你想修改数组中的元素,那么你需要一个引用:

Element & element = elements[index];
        ^

答案 1 :(得分:0)

是的,本地变量"元素"独立于全局"元素指针"。 本地价值的变化不会改变全球价值。