При условии отсутствия оптимизации компилятора.Сколько раз будет создан объект типа OutputBuffer_s?
#include <iostream>
#include <vector>
struct OutputBuffer_s {
int encoded[10];
};
OutputBuffer_s func() {
OutputBuffer_s s;
return s;
}
int main() {
OutputBuffer_s a = func();
}
Первоначально я предполагал три раза.
1) Когда вызывается func (), объект s
будет созданв стеке.
2) Когда func () выходит из области видимости, он возвращает копию объекта s
в main ().
3) Копирование значения в объект a
в main (), так как значение, возвращаемое func (), будет временным.
Я знаю, что я здесь не прав, так как я скомпилировал с -O0
в g++
, но я мог видеть только одно созданиепосле переопределения конструкторов.Я хочу знать, где и почему я не прав.