void ParticleGeneratorController::generate() {
for( unsigned i = 0; i < generators.size(); i++) {
ParticleGenerator generator = *generators[i];
generator.update();
}
}
似乎调用了复制构造函数什么的,但我没有定义一个。我只有一个显式的默认构造函数。
https://github.com/ChrisLundquist/Waveform/blob/master/src/models/particle_generator.h
鉴于我上面的代码,测试失败。https://github.com/ChrisLundquist/Waveform/blob/master/spec/controllers/particle_generator_controller_spec.cpp#L21
当写为
void ParticleGeneratorController::generate() {
for( unsigned i = 0; i < generators.size(); i++) {
generators[i]->update();
}
}
测试通过。
为什么在第一个实现中调用了复制构造函数?它是如何由编译器生成的?